数据类型(列表)
列表 [ ]
列表是一个数据的集合,集合内可以放任何数据类型,可对集合进行方便的正删改查操作。(值可以重复,有序)
定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素
特性:
1.可存放多个值
2.按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序
3.可修改指定索引位置对应的值,可变
创建
L1 = []#定义空列表 L2 = ['a','b','c','d']#存4个值,索引为0~3 L3 = ['abc','def','ghi']#嵌套列表
查询
L2.index('a')#返回指定元素的索引值,从左向右查找,找到第一个匹配
L2.count('a')#统计指定元素的个数
L2 = ['a','b','c','d','a','e',1,2]#存8个值,索引为0~7 print(L2[2])#通过索引取值,打印 print(L2[-1])#通过索引从列表右边开始取值,打印 print(L2[-2]) print(L2.index('a'))#返回指定元素的索引值,从左向右查找,找到第一个匹配,打印 print(L2.count('a'))#统计指定元素的个数,打印
输出
c
2
1
0
2
索引(下标)从0开始,从左往右增加
切片(顾头不顾尾!从左往右!)
:
L2 = ['a','b','c','d','a','e',1,2]#存8个值,索引为0~7 print(L2[0:3])#返回从索引0至3的元素,不包括3,打印 print(L2[:-1])#返回从索引0至最后一个值,不包括最后一个值,打印 print(L2[3:6])#返回从索引3至6的元素,打印 print(L2[3:])#返回从索引3至最后所有的值,打印 print(L2[:3])#返回从索引1至3的值,打印 print(L2[1:6:2])#返回索引1至6的值,但步长为2(每隔一个元素,取一个值),打印 print(L2[:])#返回所有的值,打印 print(L2[::2])#按步长为2,返回所有值,打印
输出
['a', 'b', 'c']
['a', 'b', 'c', 'd', 'a', 'e', 1]
['d', 'a', 'e']
['d', 'a', 'e', 1, 2]
['a', 'b', 'c']
['b', 'd', 'e']
['a', 'b', 'c', 'd', 'a', 'e', 1, 2]
['a', 'c', 'a', 1]
追加
L2.append("A")#列表最后面追加A
L2 = ['a','b','c','d','a','e',1,2]#存8个值,索引为0~7 L2.append("A")#列表最后面追加A print(L2)#打印
输出
['a', 'b', 'c', 'd', 'a', 'e', 1, 2, 'A']
增加
L2.insert(3,"B")#在列表的索引为3的位置 插入 一个值 B
L2 = ['a','b','c','d','a','e',1,2] L2.insert(3,"B")#在列表的索引为3的位置 插入 一个值 B print(L2) #打印
输出
['a', 'b', 'c', 'B', 'd', 'a', 'e', 1, 2]
修改
重新赋值
L2 = ['a','b','c','d','a','e',1,2]#存8个值,索引为0~7 L2[3] = "Boy"#把索引3的元素修改为Boy print(L2)#打印 L2[4:6] = "Jack Chen"#把索引4-6的元素改为Jack Chen,不够的元素自动增加 print(L2) #打印
输出
['a', 'b', 'c', 'Boy', 'a', 'e', 1, 2]
['a', 'b', 'c', 'Boy', 'J', 'a', 'c', 'k', ' ', 'C', 'h', 'e', 'n', 1, 2]
删除
L2.pop()#删除最后一个元素
L2.remove('c') #删除从左找到的第一个指定元素
del L2[4]#用python全局的删除方法删除 指定索引元素
del L2[3:7]#删除多个元素(按索引)
L2 = ['a','b','c','Boy','J','a','c','k',' ','C','h','e','n',1,2,4,4,4] L2.pop()#删除最后一个元素 print(L2)#打印 L2.remove('c') #删除从左找到的第一个指定元素 print(L2) #打印 del L2[4]#用python全局的删除方法删除 指定索引元素 print(L2)#打印 del L2[3:7]#删除多个元素(按索引) print(L2) #打印
输出
['a', 'b', 'c', 'Boy', 'J', 'a', 'c', 'k', ' ', 'C', 'h', 'e', 'n', 1, 2, 4, 4]
['a', 'b', 'Boy', 'J', 'a', 'c', 'k', ' ', 'C', 'h', 'e', 'n', 1, 2, 4, 4]
['a', 'b', 'Boy', 'J', 'c', 'k', ' ', 'C', 'h', 'e', 'n', 1, 2, 4, 4]
['a', 'b', 'Boy', 'C', 'h', 'e', 'n', 1, 2, 4, 4]
循环
for
L2 = ['a','b','c','Boy','J','a','c','k',' ','C','h','e','n',1,2] for i in L2: print(i)
输出
a
b
c
Boy
J
a
c
k
C
h
e
n
1
2
range
range()就是生成一个列表为执行for循环
用list将range转换成一个列表使用即可
>>> range(1,100)
range(1, 100)
>>> list(range(1,100))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(0,100,2))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54,
56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]
枚举
enumerate()#将索引值和元素组成列表,打印
names = ["old_driver",'rain','jack','shanshan','peiqi','black_girl'] for i in enumerate(names):#将索引值和元素组成列表,打印 print(i)
输出
(0, 'old_driver')
(1, 'rain')
(2, 'jack')
(3, 'shanshan')
(4, 'peiqi')
(5, 'black_girl')
不想有括号
for index,i in enumerate(names)#将索引和元素分辨定义为一个临时变量
names = ["old_driver",'rain','jack','shanshan','peiqi','black_girl'] for index,i in enumerate(names): print(index,i)
输出
0 old_driver
1 rain
2 jack
3 shanshan
4 peiqi
5 black_girl
排序
L2.sort()#按照ASCII码的顺序排序(符号-大写字母-小写字母)
L2.reverse()#反转
L2 = ['a','Z','d','#','z','y','A','e','h','!'] L2.sort()#按照ASCII码的顺序排序(符号-大写字母-小写字母) print(L2) L2.reverse()#反转 print(L2)
输出
['!', '#', 'A', 'Z', 'a', 'd', 'e', 'h', 'y', 'z']
['z', 'y', 'h', 'e', 'd', 'a', 'Z', 'A', '#', '!']
扩展(拼接)
print(L2+n)#拼接
R.extend(m)#将m拼接到R后面
L2 = ['a','b','c','d','e','f'] n = [1,2,3,4] print(L2+n)#拼接 m = ['H','I','J','K','L'] R = [7,8,9] R.extend(m)#将m拼接到R后面 print(R)
输出:
['a', 'b', 'c', 'd', 'e', 'f', 1, 2, 3, 4]
[7, 8, 9, 'H', 'I', 'J', 'K', 'L']
清空
L2.clear()#清空列表
L2 = ['a','b','c','d','e','f'] L2.clear()#清空列表 print(L2)
输出
[]
复制(浅copy)
L1=L2.copy()#复制列表
L2 = ['a','b','c','d','e','f'] L1=L2.copy()#复制列表 print(L2) print(L1)
输出
['a', 'b', 'c', 'd', 'e', 'f']
['a', 'b', 'c', 'd', 'e', 'f']
浅复制的是把列表第一层的id独立创建一层,子列表就不行了。
深copy
import copy
list = copy.deepcopy(names)
names = ["old_driver",'rain','jack',[1,2,3,4]] import copy list = copy.deepcopy(names) print(names,list) names[3][2] = -10 print(names,list)
输出
['old_driver', 'rain', 'jack', [1, 2, 3, 4]] ['old_driver', 'rain', 'jack', [1, 2, 3, 4]]
['old_driver', 'rain', 'jack', [1, 2, -10, 4]] ['old_driver', 'rain', 'jack', [1, 2, 3, 4]]
长度
len()
names = ["old_driver",'rain','jack','shanshan','peiqi','black_girl'] print(len(names))
输出
6
#分割
>>> s = 'hello world'
>>> s.split(' ')
['hello', 'world']
>>> s2= 'hello,world'
>>> s2.split(',')
#连接
>>> l = ['hi','eva']
>>> '!'.join(l)
'hi!eva'
看源码按住ctrl,鼠标单击