Python列表
列表
列表是Python中最基本的数据结构。列表中的每个元素都分配一个数字------即当前数据的位置,或索引,第一个索引是0,第二个索引是1,以此类推。
列表是Python中内置有序、可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开;
当列表元素增加或删除时,列表对象自动进行扩展或收缩内存,保证元素之间没有缝隙;
在Python中,一个列表中的数据类型可以各不相同,可以同时分别为整数、实数、字符串等基本类型,甚至是列表、元组、字典、集合以及其他自定义类型的对象。[10, 20, 30, 40]
['crunchy frog', 'ram bladder', 'lark vomit']
['spam', 2.0, 5, [10, 20]]
[['file1', 200,7], ['file2', 260,9]]
list1=['aaa','bbb','ccc',28,True,1.78,['mike',28],['Jason',36],(1,2,3),{'名字':'正正','爱好':'编程'}]
空值创建:(1)list_data=list() (2)list_data=[]
元素之间使用,区隔头尾使用方括弧[]
1、列表内的每个元素(数据),遵守该数据类型的原有规则。比如字符串类型是要加引号''
2、可以有多层嵌套,每一层嵌套为一个独立体存在
列表List的基本特性
增加------(1)支持空列表创建(2)支持列表数据更新(添加)
删除------(1)支持列表整体删除(2)支持列表元素删除(3)支持切片删除
修改------(1)支持列表数据修改(基于下标、索引、index)
查询------(1)支持列表数据查询(基于下标、索引、index)(2)支持切片查询(3)支持第一级元素长度统计(len)
列表常用方法
| 方法 | 说明 |
| lst.append(x) | 将元素x添加至列表lst尾部 |
| lst.extend(L) | 将列表L中所有元素添加至列表lst尾部 |
| lst.insert(index, x) | 在列表lst指定位置index处添加元素x,该位置后面的所有元素后移一个位置 |
| lst.remove(x) | 在列表lst中删除首次出现的指定元素,该元素之后的所有元素前移一个位置 |
| lst.pop([index]) | 删除并返回列表lst中下标为index(默认为-1)的元素 |
| lst.clear() | 删除列表lst中所有元素,但保留列表对象 |
| lst.index(x) | 返回列表lst中第一个值为x的元素的下标,若不存在值为x的元素则抛出异常 |
| lst.count(x) | 返回指定元素x在列表lst中的出现次数 |
| lst.reverse() | 对列表lst所有元素进行逆序 |
| lst.sort(key=None, reverse=False) | 对列表lst中的元素进行排序,key用来指定排序依据,reverse决定升序(False),还是降序(True) |
| lst.copy() | 返回列表lst的浅复制 |
1、增加数据
list1=['aaa',28,True,1.78,['mike',28],(1,2,3),{'名字':'正正','爱好':'编程'}]
print(list1)
list1.append('ddd') #['aaa', 28, True, 1.78, ['mike', 28], (1, 2, 3), {'名字': '正正', '爱好': '编程'}, 'ddd']
print(list1)
list1.insert(1,'bbb') #在位置1插入'bbb'
print(list1) #['aaa', 'bbb', 28, True, 1.78, ['mike', 28], (1, 2, 3), {'名字': '正正', '爱好': '编程'}, 'ddd']
2、修改数据
list1=['aaa',28,True,1.78,['mike',28],(1,2,3),{'名字':'正正','爱好':'编程'}]
list1[4]=['mike',29] #修改数据
print(list1) #['aaa', 28, True, 1.78, ['mike', 29], (1, 2, 3), {'名字': '正正', '爱好': '编程'}]
list1[0:2]=['bbb',30] #修改数据
print(list1) #['bbb', 30, False, True, 1.78, ['mike', 29], (1, 2, 3), {'名字': '正正', '爱好': '编程'}]
3、查询数据
list1=['aaa',28,True,1.78,['mike',28],(1,2,3),{'名字':'正正','爱好':'编程'}]
print(list1[1]) #28
print(list1[0:2]) #['aaa', 28]
4、删除数据
list1=['aaa',28,True,1.78,['mike',28],(1,2,3),{'名字':'正正','爱好':'编程'}]
list1.pop(1)
print(list1) #['aaa', True, 1.78, ['mike', 28], (1, 2, 3), {'名字': '正正', '爱好': '编程'}]
list1.remove(1.78) #基于值删除数据
print(list1) #['aaa', True, ['mike', 28], (1, 2, 3), {'名字': '正正', '爱好': '编程'}]
del list1[0:2] #基于索引位置删除->[]
print(list1) #[['mike', 28], (1, 2, 3), {'名字': '正正', '爱好': '编程'}]
list1.clear() #清空全部列表元素->[]
print(list1) #[]
del list1 #删除整个列表
print(list1) #NameError: name 'list1' is not defined
特别注意:
1、修改数据和查询数据"一线间"
2、圈定范围修改列表数据时,需要保证添加的数据为可迭代对象
3、注意pop()默认为删除最后一位,可指定索引位置,并返回被删除的值
4、remove()基于值/数据删除数据,删除的是第一个匹配的数据,并非所有
5、列表合并
list1=[1,2,3,4] list2=[5,6,7,8,9] list_join1=list1+list2 #输出list_join->[1,2,3,4,5,6,7,8,9] print(list_join1) list1.extend(list2) #extend()会直接改变当前变量内的值 print(list1) #输出list_join->[1,2,3,4,5,6,7,8,9]
6、列表排序
list1=[9,8,5,6] list2=[3,4,7,1,2] list1.extend(list2) #extend()会直接改变当前变量内的值 print(list1) #[9, 8, 5, 6, 3, 4, 7, 1, 2] list1.sort() #sort()会直接改变当前变量内的值 print(list1) #输出正序list1 list1.sort(reverse=True) print(list1) #输出倒序list1
7、列表反转
list1=['我','爱','你'] print(list1) list1.reverse() #reverse()会直接改变当前变量内的值 print(list1)
8、元素数量统计
list1=[1,2,3,4,5,6,1,2,3,4,5] print(list1.count(2))
9、自身复制
list1=[1,2,3,4,5,6,1,2,3,4,5] print(list1*3)
10、列表的长度
list1=[1,2,3,4,5,6,1,2,3,4,5] print(len(list1))
11、列表的深复制和浅复制
import copy num_group=[[1,2,3],[4,5,6]] print(num_group) print(id(num_group)) print(id(num_group[0])) #浅复制 num_group_copy=num_group.copy() print(num_group_copy) print(id(num_group_copy)) print(id(num_group_copy[0])) #深复制 num_group_copy_deep=copy.deepcopy(num_group) print(num_group_copy_deep) print(id(num_group_copy_deep)) print(id(num_group_copy_deep[0]))
输出结果:
[[1, 2, 3], [4, 5, 6]]
140247536210304
140247540820160
[[1, 2, 3], [4, 5, 6]]
140247540811584
140247540820160
[[1, 2, 3], [4, 5, 6]]
140247532933568
140247531244992
浅复制的第一个元素地址与原始列表的第一个元素地址相同,深复制的元素地址与原始地址完全不同
12、包含关系判断
message=['我','爱','你']
print('爱' in message)
输出:True
13、切片延伸
num=[0,1,2,3,4,5,6,7,8,9] print(num[0:10:2]) #[起、止、步长] 输出->[0,2,4,6,8] # 特别注意类似for循环里面的range函数 print(num[::2]) #输出->[0,2,4,6,8] # 特别注意-起止不设定默认从头到尾的范围
输出:
[0, 2, 4, 6, 8]
[0, 2, 4, 6, 8]
14、列表嵌套列表就形成了初级的数据结构,如下:
matrix_list=[
['拍黄瓜','夫妻肺片','田园沙拉'],
['宫保鸡丁','鱼香肉丝','番茄烧鸡蛋'],
['冰激凌','提拉米苏','水果'],
['啤酒','白酒','红酒'],
]
print(matrix_list[0][1])
输出:
夫妻肺片
一组数据里面有高度、有宽度可以叫做
1、矩阵
2、二维数组
15、list与for循环一起联动
dogs=[
'哈士奇',
'拉布拉多',
'边境牧羊犬',
]
for dog in dogs:
print(dog)
输出结果:
哈士奇
拉布拉多
边境牧羊犬
menu_list=[
['拍黄瓜','夫妻肺片','田园沙拉'],
['宫保鸡丁','鱼香肉丝','番茄烧鸡蛋'],
['冰激凌','提拉米苏','水果'],
['啤酒','白酒','红酒'],
]
for menu in menu_list:
print(menu)
['拍黄瓜', '夫妻肺片', '田园沙拉']
['宫保鸡丁', '鱼香肉丝', '番茄烧鸡蛋']
['冰激凌', '提拉米苏', '水果']
['啤酒', '白酒', '红酒']
menu_list=[
['拍黄瓜','夫妻肺片','田园沙拉'],
['宫保鸡丁','鱼香肉丝','番茄烧鸡蛋'],
['冰激凌','提拉米苏','水果'],
['啤酒','白酒','红酒'],
]
for menu in menu_list:
print(menu)
for food in menu:
print(food)
输出结果:
['拍黄瓜', '夫妻肺片', '田园沙拉']
拍黄瓜
夫妻肺片
田园沙拉
['宫保鸡丁', '鱼香肉丝', '番茄烧鸡蛋']
宫保鸡丁
鱼香肉丝
番茄烧鸡蛋
['冰激凌', '提拉米苏', '水果']
冰激凌
提拉米苏
水果
['啤酒', '白酒', '红酒']
啤酒
白酒
红酒
16、join连接
list1=['a','b','c','d','e','f']
print("-".join(list1))
a-b-c-d-e-f
17、split拆分
list1=['a','b','c','d','e','f']
word1="-".join(list1)
sep=word1.split("-")
print(word1)
print(sep)
输出:
a-b-c-d-e-f
['a', 'b', 'c', 'd', 'e', 'f']
18、取多个文件名,不需要扩展文件名
files=['aa.jpg','bb,jpg','cc.jpg']
for file in files:
print(file[0:2],end=',')
输出:
aa,bb,cc,
files=['aa.jpg','bb,jpg','cc.jpg']
for file in files:
print(file.split('.'))
输出:
['aa', 'jpg']
['bb,jpg']
['cc', 'jpg']
19、统计身边的人
list_1=[
['a','male',29,'江苏'],
['b','female',31,'黑龙江'],
['c','female',34,'吉林'],
['a','male',28,'辽宁'],
['a','male',31,'陕西'],
]
list_male=[]
list_female=[]
list_agemore30=[]
list_jiguan=[]
for list in list_1:
if list[1]=='male':
list_male.append(list)
else:
list_female.append(list)
for list in list_1:
if list[2]>30:
list_agemore30.append(list)
maxage=0
minage=100
for list in list_1:
if list[2]>maxage:
maxage=list[2]
for list in list_1:
if list[2]<minage:
minage=list[2]
for list in list_1:
list_jiguan.append(list[3])
print(list_male)
print(list_female)
print(list_agemore30)
print(maxage)
print(minage)
print(list_jiguan)
输出:
[['a', 'male', 29, '江苏'], ['a', 'male', 28, '辽宁'], ['a', 'male', 31, '陕西']]
[['b', 'female', 31, '黑龙江'], ['c', 'female', 34, '吉林']]
[['b', 'female', 31, '黑龙江'], ['c', 'female', 34, '吉林'], ['a', 'male', 31, '陕西']]
34
28
['江苏', '黑龙江', '吉林', '辽宁', '陕西']
https://www.cnblogs.com/xiaoyh/p/9689596.html

浙公网安备 33010602011771号