#使用方括号[ ]括起来的,每个元素之间用逗号隔开;
#可以储存不同的数据类型。
#数组
1、创建空列表
li=[] print(li,type(li)) #输出结果: [] <class 'list'>2、创建多元素列表
gi=[1,2,3,'abc','def','ghi',["I","love","python"]] print(gi,type(gi)) #输出结果: [1, 2, 3, 'abc', 'def', 'ghi', ['I', 'love', 'python']] <class 'list'>3、强转
sr="abc" hi=list(sr) print(hi,type(hi)) #输出结果: ['a', 'b', 'c'] <class 'list'>(1)拼接
li1=["I"] li2=["love","python"] print(li1+li2) #输出结果: ['I', 'love', 'python'](2)重复
print(li2*3) #输出结果: ['love', 'python', 'love', 'python', 'love', 'python'](3)索引,切片([:],[::])
gi=['cl','WZX','abc','def','ghi','I','love','python'] print(len(gi)) print((gi[0],gi[-2])) print(gi[:5]) print(gi[0:6:2]) print(gi[-1:-8:-2]) print(gi[::-1]) print(gi[6][1]) #输出结果: 8 ('cl', 'love') ['cl', 'WZX', 'abc', 'def', 'ghi'] ['cl', 'abc', 'ghi'] ['python', 'I', 'def', 'WZX'] ['python', 'love', 'I', 'ghi', 'def', 'abc', 'WZX', 'cl'] o(1)增
append() li = ["a", "b"] li.append("hh") print(li) #输出结果: ['a', 'b', 'hh'] sr = "城市学院" li = [] for i in sr: li.append(ord(i)) print(li) #输出结果: [22478, 24066, 23398, 38498] extend() li=["I","know"] li1=["a","b","c"] li.extend(li1) print(li) #输出结果: ['I', 'know', 'a', 'b', 'c'] insert():按照索引添加 li=["I","know"] li1=["a","b","c"] li.insert(1,li1) print(li) #输出结果: ['I', ['a', 'b', 'c'], 'know'](2)删
pop():返回被删除的元素
如果不指定索引,默认删除最后一个元素删除指定索引对应的元素 li=["a","b","c","d","e"] print(li.pop()) print(li.pop(2)) print(li) #输出结果: e c ['a', 'b', 'd']remove():移除第一次遇到的指定元素
li=["a","b","c","d","e"] li.remove(li[2]) print(li) li.remove('e') print(li) #输出结果: ['a', 'b', 'd', 'e'] ['a', 'b', 'd'] del li=["a","b","c","d","e"] del li[3] print(li) #输出结果: ['a', 'b', 'c', 'e'] clear() li.clear() print(li) #输出结果: [](3)改
li1=["a","b","c"] li=['I', ['a', 'b', 'c'], 'know'] li1[2]="666" print(li1) li[2:]=['x','y','z'] print(li) #输出结果: ['a', 'b', '666'] ['I', ['a', 'b', '666'], 'x', 'y', 'z'](4)查:与以上的索引,切片相同
(1)元素遍历
li=["a","b","c","d","e"] for i in li: print(i,end=" ") #输出结果: a b c d e(2)索引遍历
li=["a","b","c"] for i in range(len(li)): print(li[i]) #输出结果: a b c(3)枚举遍历
enumerate():对于一个可迭代/可遍历的对象(如列表,字符串等),将其组成一个索引序列,利用它可以同时获得索引和值。 li=["a","b","c"] for i in enumerate(li,0): print(i) #输出结果: (0, 'a') (1, 'b') (2, 'c') for index,value in enumerate(li,0): print(index,value) #输出结果: 0 a 1 b 2 c#例题
**输出两个列表的交集**: li=[] li1=["a","b","c","d"] li2=["c","d","e","f"] for i in li1: if i in li2: li.append(i) print(li) #输出结果: ['c', 'd'] **输出两个列表的并集**: li1=["a","b","c","d"] li2=["c","d","e","f"] for i in li2: if i not in li1: li1.append(i) print(li1) #输出结果: ['a', 'b', 'c', 'd', 'e', 'f'] #1.input()函数实现往空列表中添加元素,当输入"q"的时候,结束输入,并返回列表。 list1=[] while True: a = input("请添加元素:") if a !="q": list1.append(a) else: break print(list1) #输出结果: 请添加元素:w 请添加元素:e 请添加元素:r 请添加元素:q ['w', 'e', 'r'] #2.随机生成30个0-10的随机整数,并统计每个数出现的次数,返回的结果形式为[[0, 3], [1, 4], ... , [10, 5]] li=[] rand=[] import random for i in range(30): rand.append((random.randint(0,10))) print(rand,end=" ") print( ) for i in range(0,11): li.append([i,rand.count(i)]) print(li) #输出结果: [9, 5, 3, 7, 5, 6, 2, 5, 4, 7, 7, 0, 3, 6, 3, 9, 0, 3, 4, 5, 1, 3, 6, 1, 1, 0, 6, 0, 10, 3] [[0, 4], [1, 3], [2, 1], [3, 6], [4, 2], [5, 4], [6, 4], [7, 3], [8, 0], [9, 2], [10, 1]]赋值是对对象的引用
la=[1,2,3,4,5,'a',['b1','b2']] lb=la print(la) print(lb) print(id(la),id(lb)) #输出结果: [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2336330341128 2336330341128 la[5]='aaa' print(la) print(lb) print(id(la),id(lb)) #输出结果: [1, 2, 3, 4, 5, 'aaa', ['b1', 'b2']] [1, 2, 3, 4, 5, 'aaa', ['b1', 'b2']] 2336330341128 2336330341128浅拷贝会创建新对象,内容是原对象的引用
三种实现方法
切片操作[:] la=[1,2,3,4,5,'a',['b1','b2']] lb2=la[:] print(la) print(lb2) print(id(la),id(lb2)) #输出结果: [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2178759777032 2178759853064 工厂函数list(li)copy模块的copy函数 import copy lb3=copy.copy(la) print(la) print(lb3) print(id(la),id(lb3)) #输出结果: [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2214658824968 2214660383880#添加原子类型,不会影响lb3的拷贝
la.append('hh') print(la) print(lb3) #输出结果: [1, 2, 3, 4, 5, 'a', ['b1', 'b2'], 'hh'] [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] la[6][1]='hh' print(la) print(lb3) #输出结果: [1, 2, 3, 4, 5, 'a', ['b1', 'hh']] [1, 2, 3, 4, 5, 'a', ['b1', 'hh']]深拷贝
import copy la=[1,2,3,4,5,'a',['b1','b2']] lb=copy.deepcopy(la) print(la,id(la)) print(lb,id(lb)) #输出结果: [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 1822894830600 [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 1822894831688 la[6][1]="hh" print(la,id(la)) print(lb,id(lb)) #输出结果: [1, 2, 3, 4, 5, 'a', ['b1', 'hh']] 2081509061640 [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2081509062728浅拷贝仅拷贝一层
深拷贝拷贝对象的所有元素,包括多层嵌套的元素
因此是开辟了一个新的内存储存区,和数据源没有关系了
列表生成式,用来生成列表的特定语法形式。
print([x for x in range(10) if x%2==0]) #输出结果: [0, 2, 4, 6, 8] sr="城市学院" print([ord(x) for x in sr]) #输出结果: [22478, 24066, 23398, 38498][exp for iter_val in iter]
[exp for iter_val in iter if if_condition]
li=[] for iter_val in iter: if if_condition: li.append(iter_val) print(li)demo:
name=["Tom","Jack","Lucy"] sub=["Python","Java","C","C++"] li=[] for i in name: for j in sub: li.append([i,j]) print(li) print([[i,j] for i in name for j in sub]) #输出结果(相同): [['Tom', 'Python'], ['Tom', 'Java'], ['Tom', 'C'], ['Tom', 'C++'], ['Jack', 'Python'], ['Jack', 'Java'], ['Jack', 'C'], ['Jack', 'C++'], ['Lucy', 'Python'], ['Lucy', 'Java'], ['Lucy', 'C'], ['Lucy', 'C++']]