python中的list被称为列表、数组,list内部存储的数据时有序的,常常通过下标/角标/索引/编号查找list的元素
1.定义一个list
namelist = ['xiaoming','xiaohong','xiaoyue']
2.list的类型
print(type(namelist)) <<< <class 'list'>
3.list增加元素
namelist.append('xiaowang')#list添加信息,append在列表的末尾增加元素 namelist.insert(0,'xiaowang')#list在指定的位置添加信息list.insert(index,value)
4.list删除元素
namelist.pop(2)#删除指定位置的元素 namelist.remove('xiaoyue')#删除指定的值 del namelist[2]#del 也是删除指定位置的,利用函数删除
5.修改元素
namelist[1] = 'xiaomi'#修改元素,直接赋值,通过编号
6.查元素
print(namelist[1])#取列表里面的第二个元素 print(namelist[-1])#取列表里面的最后一个元素
7.list方法
namelist.clear()#清空整个list namelist.count('xiaowang')#返回这个元素在这个list中出现的次数 namelist.index('xiaowang')#返回这个元素第一次出现的下标,如果不存在这个元素会报错 namelist.reverse()#反转,没有任何的返回值,将namelist内容反转
print(namelist) #>>>['xiaoyue', 'xiaohong', 'xiaoming']
print(len(listinlist))#查看list的元素个数
8.拼接两个list
userlist=['Tony','Tim'] namelist.extend(userlist)#将userlist里面的值加入到namelist中,插入到namelist的后面,namelist值改变了 alllist = namelist+userlist#两个列表相加,也是合并到一起的意思,两个list都没有改变,重新赋值给alllist
9.list内部排序(此时的所有元素必须为数字,整型/浮点)
numlist = [1,3,9,2,34] numlist.sort()#排序,没有任何的返回值,排序默认升序 <<< [1,2,3,9,34] numlist.sort(reverse=True)#排序变为降序 <<< [34,9,3,2,1]
10.多维数组
#判断几维数组,就看有几个list层 list1 = [1,2,3]#一维数组 list2 = [21,2,[4,'4']]#二维数组 listinlist=[[1,2,3,4,5],['dd','ff','gg','ss',['aa','bb']],33]#三维数组 #多维数组操作: listinlist[1][2]='性别' >>> [[1,2,3,4,5],['dd','ff','性别','ss',['aa','bb']],33]
listinlist[1][4].append('cc') >>> [[1,2,3,4,5],['dd','ff','性别','ss',['aa','bb','cc']],33]
11.list循环两种方式
python3中range() 函数可创建一个整数序列对象,一般用在 for 循环中。<<< <class 'range'>
range(start,stop[,step]) >>> range(0,5,1)从0开始,截止到4不包括5,步长为1
将range转换为lis >>> list(range(0,10,2)) >>> [0,2,4,6,8]
for name in namelist:#直接循环list,name为每次循环中namelist的元素值 print(name) for i in range(len(namelist)):#通过角标获取元素值 print(namelist[i])
12.string to list
import string strus = ['11','22','rere','ggf','wew'] nums=[] 1.for i in string.digits:#1.for循环 nums.append(int(i)) >>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2.nums = list(string.digits)#2.强制类型转换 >>> ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
13.list循环实例:
第一个:
a=[1,3,4,3,7,7,5] for i in a: if i%2!=0: a.remove(i)#删除只能删掉第一个出现的i,后面的i不能被删除 print(a)#执行结果是[4,3,7,5],第一次是奇数删除,列表变为[3,4,3,7,7,5],第二次循环呢从下标1开始,此时3变成了下标0,所以3被打印出来,以此类推 第一次 [1,3,4,3,7,7,5] 下标0,value为1,删除 第二次 [3,4,3,7,7,5] 下标1,value为4,保留 第三次 [3,4,3,7,7,5] 下标2,value为3,删除第一个3 第四次 [4,3,7,7,5] 下标3,value为7,删除第一个7 第五次 [4,3,7,5] 下标4,超过数组下标最大值,跳出for循环 结果为 [4,3,7,5]
第二个: a=[1,3,4,3,7,7,5] b=a#list赋值给的是内存地址,此时a和b存储的是一个内存地址,指向一个空间,所以循环a或者b都一样 for i in b: if i%2!=0: a.remove(i) print(id(a)) print(id(b))#a和b的内存地址是一样的,因为b=a,定义a的时候,a里面存的是内存地址,内存地址指向的是一个存储数据的内存 print(a)#执行结果为[4,3,7,5]
第三个: a=[1,3,4,3,7,7,5] b=a[:]#取出a中的所有元素给b,并不是内存地址,此时b被重新分配一个内存空间,a和b所存储的内存地址不同,此时循环b删除a,b永远都是完整的b for i in b: if i%2!=0: a.remove(i) print(id(a)) print(id(b))#a和b的内存地址是不一样的
14.例子
username = 'xiaohong' namelist = ['xiaoming','xiaohong','xiaoyue'] if namelist.count(username)>0:#查找username在namelist中出现的次数,如果大于0代表存在 print('user is exist') if username in namelist:#用in也能进行判断,判断用户是否存在 print('user is exist') if not username in namelist:#用户不存在,条件判断前面加一个not print('user is not exist')