列表
http://www.runoob.com/python3/python3-list.html
列表的数据项不需要具有相同的类型
列表的创建
1.用[]
lq=["李明","张三","李四","王五"]
2.列表名=list(容器)
str1=["我爱我的祖国"] lb=list(str1) #创建列表 lb1=list("我爱我的祖国") print(lb) print(lb1)
返回指定元素
dq=["台湾","陕西","浙江","广西","香港","上海"] a=dq[1] #返回指定元素 print(a) b=dq[-2:] #返回指定元素的列表 print(b)
修改
dq=["台湾","陕西","浙江"] dq[1]="天津" #修改元素 print(dq) dq[1:]=["北京","上海"] #修改元素 #右侧是容器 print(dq)
dq=["台湾","陕西","浙江"] i=len(dq) #把列表统一设为某值 dq[:]=[0]*i print(dq)
s.append(s1) 在末尾追加列表
s=[1,2,3,2,5,6,2,4,9,0,2,4] s1=["a","b","c","d"] s.append(s1) print(s)
结果:
追加的列表整体作为一项
s=[1,2,3,2,5,6,2,4,9,0,2,4] s.append(100) print(s)
s.extend(s1)在末尾追加另一个列表的元素 与 += 相同
s=[1,2,3,2,5,6,2,4,9,0,2,4] s1=["a","b","c","d"] s.extend(s1) print(s)
结果:
插入
motorcycles.insert(1, 'ducati') 在指定位置插入元素
索引号 就是插入的位置
s.insert(1,s1); 在指定位置插入列表
s=[1,2,3,2,5,6,2,4,9,0,2,4];
s1=['a','b','c','d']
s.insert(1,s1);
print(s);
结果
seq1=seq*4 把列表seq的内容重复n边再赋值给seq1
元素是否在列表中
3 in [1, 2, 3] 3是否在列表中 返回值类型bool ture
删除
del motorcycles[1] 删除指定元素
参数 索引号
del 列表名 删除整个列表
del s[2:5] 删除指定范围的元素
popped = motorcycles.pop() 删除最后一个元素并返回其内容
从motorcycles列表中删除最后一个元素,并把删除元素的内容返回给popped
与popped = motorcycles.pop(-1) 相同
popped = motorcycles.pop(1) 删除指定元素,并返回其内容
从motorcycles列表中删除指定元素,并把删除元素的内容返回给popped
motorcycles.remove('yamaha') 删除指定值的元素
注意 方法remove() 只删除第一个指定的值
如果要移除的元素不在列表中,remove方法将引发ValueError异常。因此,在使用remove方法之前,我们需要确保要移除的元素存在
清空列表
s.clear()
复制列表
list2 = list1.copy() 复制列表
copy是浅拷贝
= 相当于 传址 两个变量指向同一个列表
lb=[1,2,3,4,5] lb1=lb print(lb1) lb[1]=20 print(lb1) """ =是传址,即lb和lb1指向同一个数据地址,修改其中一个列表的数据,相当于修改另一个列表的数据 """
list_name =["李琪",["周义杰","毛绍祺"]] data01= list_name.copy() #浅拷贝,只复制第一层 data01[0]="琪琪" data01[1][0]="义杰" print(list_name) print(data01)
排列
cars.sort() 列表元素按升续排列
cars.sort(reverse=True) 列表元素按降续排列
l.sort(key=abs) 列表元素按降续排列,按照指定函数进行计算后的返回值进行排序
排序后的每个元素是原元素
cars1=sorted(cars) 列表元素按升续排列
cars列表元素的顺序没有改变
cars1保存改变顺序之后的列表
反转元素顺序
lb=["a","b","c","d"] lb.reverse() #反转元素顺序 print(lb)
lb=["a","b","c","d"] lb1=lb[::-1] #反转元素顺序 print(lb1)
返回列表元素的总个数
dq=["台湾","陕西","浙江"] i=len(dq) #返回列表元素的总个数 print(i)
返回某元素出现的次数
s1=s.count('sd') 返回某元素出现的次数
寻找某元素的索引
s1=s.index('sd') 寻找某元素的索引
没找到抛出错误
只找一个
s1=s.index('sd',1,4) 在指定范围内寻找某元素的索引
range(1,5) 包含1、2、3、4的集合
注意不包含5
range(5) 0到5
序列拆包
tuple01 =["李琪","周义杰","毛绍祺"] a,b,c=tuple01 #拆包 #注意:前面的变量数必须等于元素个数 print(a) print(b) print(c)
list(seq) 将元组转换为列表
sss=set(li) 将列表转换为集合
squares = [value**2 for value in range(1,11)]
列表推导式
作用:根据其它容器,以简易方式构建新列表
格式1:
[新列表元素值表达式 for 变量 in 容器]
TestList = [x*2 for x in range(10)] #创建 数值*2 的列表 print(TestList)
等价于以下语句:
newList = [] for x in range(10): newList.append(x*2) print(newList)
格式2:
新列表元素值表达式 for 变量 in 容器 if 条件
TestList = [i for i in range(10) if i % 2 == 0] #创建 全是偶数 的列表 print(TestList)
等价于以下语句:
TestList = [] for i in range(10): if i % 2 == 0: TestList.append(i) print(TestList)
格式3:双层列表无条件
OldList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] TestList = [j for i in OldList for j in i] print(TestList)
等价于以下语句:
OldList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] TestList = [] for i in OldList: for j in i: TestList.append(j) print(TestList)
格式4:双层列表带条件
OldList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] TestList = [j for i in OldList for j in i if j % 2 == 0] print(TestList)
参考:https://blog.csdn.net/qq_42659468/article/details/132427538
练习
import random """ 彩票:双色球 红色:6个1--33之间的整数不能重复 蓝色:1个1--16之间的整数 随机产生一注彩票(列表(前六个是红色,最后一个蓝色)) """ list01=[] while True: i=random.randint(1,33) if i not in list01: list01.append(i) if len(list01) == 6: break i=random.randint(1,16) list01.append(i) print(list01)
""" 有难度哦 自定义排序算法 升序:从小到大 """ list01=[5,3,4,7,4,7,8,9,10,20] for i in range(len(list01)-1): for j in range(i+1,len(list01)): if list01[i]>list01[j]: list01[i],list01[j]=list01[j],list01[i] print(list01)