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、增加数据

1
2
3
4
5
6
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、修改数据

1
2
3
4
5
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、查询数据 

1
2
3
list1=['aaa',28,True,1.78,['mike',28],(1,2,3),{'名字':'正正','爱好':'编程'}]
print(list1[1])        #28
print(list1[0:2])      #['aaa', 28]

4、删除数据 

1
2
3
4
5
6
7
8
9
10
11
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、列表合并

1
2
3
4
5
6
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、列表排序

1
2
3
4
5
6
7
8
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、列表反转

1
2
3
4
list1=['我','爱','你']
print(list1)
list1.reverse()        #reverse()会直接改变当前变量内的值
print(list1)

8、元素数量统计

1
2
list1=[1,2,3,4,5,6,1,2,3,4,5]
print(list1.count(2))

9、自身复制

1
2
list1=[1,2,3,4,5,6,1,2,3,4,5]
print(list1*3)

10、列表的长度  

1
2
list1=[1,2,3,4,5,6,1,2,3,4,5]
print(len(list1))

11、列表的深复制和浅复制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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、包含关系判断

1
2
message=['我','爱','你']
print('爱' in message)

 输出:True  

13、切片延伸

1
2
3
4
5
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、列表嵌套列表就形成了初级的数据结构,如下:

1
2
3
4
5
6
7
8
matrix_list=[
    ['拍黄瓜','夫妻肺片','田园沙拉'],
    ['宫保鸡丁','鱼香肉丝','番茄烧鸡蛋'],
    ['冰激凌','提拉米苏','水果'],
    ['啤酒','白酒','红酒'],
]
 
print(matrix_list[0][1])

 输出:

夫妻肺片  

一组数据里面有高度、有宽度可以叫做

1、矩阵

2、二维数组

15、list与for循环一起联动

1
2
3
4
5
6
7
dogs=[
    '哈士奇',
    '拉布拉多',
    '边境牧羊犬',
]
for dog in dogs:
    print(dog)

输出结果:

哈士奇

拉布拉多

边境牧羊犬

1
2
3
4
5
6
7
8
menu_list=[
    ['拍黄瓜','夫妻肺片','田园沙拉'],
    ['宫保鸡丁','鱼香肉丝','番茄烧鸡蛋'],
    ['冰激凌','提拉米苏','水果'],
    ['啤酒','白酒','红酒'],
]
for menu in menu_list:
    print(menu)
 输出结果:
['拍黄瓜', '夫妻肺片', '田园沙拉']
['宫保鸡丁', '鱼香肉丝', '番茄烧鸡蛋']
['冰激凌', '提拉米苏', '水果']
['啤酒', '白酒', '红酒']
1
2
3
4
5
6
7
8
9
10
menu_list=[
    ['拍黄瓜','夫妻肺片','田园沙拉'],
    ['宫保鸡丁','鱼香肉丝','番茄烧鸡蛋'],
    ['冰激凌','提拉米苏','水果'],
    ['啤酒','白酒','红酒'],
]
for menu in menu_list:
    print(menu)
    for food in menu:
        print(food)

输出结果:

['拍黄瓜', '夫妻肺片', '田园沙拉']
拍黄瓜
夫妻肺片
田园沙拉
['宫保鸡丁', '鱼香肉丝', '番茄烧鸡蛋']
宫保鸡丁
鱼香肉丝
番茄烧鸡蛋
['冰激凌', '提拉米苏', '水果']
冰激凌
提拉米苏
水果
['啤酒', '白酒', '红酒']
啤酒
白酒
红酒

16、join连接

1
2
list1=['a','b','c','d','e','f']
print("-".join(list1))
 输出:
a-b-c-d-e-f

17、split拆分

1
2
3
4
5
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、取多个文件名,不需要扩展文件名  

1
2
3
files=['aa.jpg','bb,jpg','cc.jpg']
for file in files:
    print(file[0:2],end=',')

输出:

aa,bb,cc,

1
2
3
files=['aa.jpg','bb,jpg','cc.jpg']
for file in files:
    print(file.split('.'))

输出:

['aa', 'jpg']

['bb,jpg']

['cc', 'jpg']

19、统计身边的人

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
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

posted @   leagueandlegends  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示