【Python】列表的使用及常用方法

132 阅读5分钟

列表的创建:

列表,是Python中最常用的数据类型之一,可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型创建一个列表,只要把逗号分隔的不同数据项使用方括号括起来即可。

语法:

使用 [ ] 直接创建列表
li = [1, 2, 4, 5]

使用list() 函数创建列表
li2 = list('122436')

特点:

列表可以一次性存储多个数据,且可以为不同的数据类型。

列表的常用操作:

增、删、改、查...

访问列表中的值:

  1. 根据索引访问列表元素
"""使用索引访问列表元素的格式为:listname[i]"""

name_1 = ['陈平安', '林守一', '崔东山']

print(name_1[0])
print(name_1[1])
print(name_1[2])

# print(name_1[3])  # 报错:IndexError: list index out of range,索引错误,超出列表长度

2. 根据切片访问列表元素

"""使用切片访问列表元素,格式为:listname[start : end : step]"""

name_2 = ['宁姚', '李宝瓶', '陈暖树']

print(name_2[0:3:2])   # 从0到3,左开右闭,步长为2  ['宁姚', '陈暖树']
print(name_2[0:4:5])   # 从0开始,左开右闭,步长为5,超出则切不到   ['宁姚']

3. 通过内置函数返回列表下标

index():

返回指定数据所在位置的下标。

语法:列表序列.index(数据,开始位置下标,结束位置下标)

name_2 = ['宁姚', '李宝瓶', '陈暖树']

print(name_2.index('宁姚', 0, 2))    # 0
print(name_2.index('苏白衣', 0, 2))  # 查找数据不存在,报错ValueError: '苏白衣' is not in list
count():

统计指定数据在当前列表中出现的次数。

print(name_2.count('宁姚'))    # 1次
print(name_2.count('苏白衣'))  # 0次

len(): 访问列表的长度,即:列表中数据的个数

print(len(name_2))   # 长度为 3
in 和 not in:

in:判断指定数据在某个列表序列,若在则返回True,否则返回False。

not in:判断指定数据不在某个列表序列,若不在则返回True,否则返回False。

name_2 = ['宁姚', '李宝瓶', '陈暖树']
name = input('请输入你要搜索的名字:')

if name in name_2:
    print(f'你要找的{name},在这里..')
else:
    print(f'你要找的{name},不存在..')

列表添加元素:

作用:增加指定数据到列表中。

append():

语法:列表序列.append(数据)

注意:如果append()追加的数据是一个序列,则追加整个序列到列表中。

name_1 = ['陈平安', '林守一', '崔东山']
print(name_1, id(name_1))  # ['陈平安', '林守一', '崔东山']        4307768512

name_1.append("男哥")
print(name_1, id(name_1))  # ['陈平安', '林守一', '崔东山', '男哥'] 4307768512
name_2 = ['宁姚', '李宝瓶', '陈暖树']
list_1 = ['汉堡', '拌粉', '凉皮']
name_2.append(list_1)

print(name_2)  # ['宁姚', '李宝瓶', '陈暖树', ['汉堡', '拌粉', '凉皮']]
extend():

用于在列表的末尾追加或扩展元素。

列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表中。

name_3 = ['宁姚', '李宝瓶', '陈暖树']
list_2 = ['阿哈', '嗯哼', '嘻嘻']
name_3.extend(list_2)

print(name_3)  # ['宁姚', '李宝瓶', '陈暖树', '阿哈', '嗯哼', '嘻嘻']
append()与extend()的区别:

append()用于在列表末尾添加新的对象,任意对象都是可以的,列表只占一个索引位,会修改原来的列表。

用于在列表末尾添加新的对象,列表只占一个索引位,在原有列表上增加。无返回值,但是会修改原来的列表。

list.append(object)

extend()向列表尾部追加一个列表,对象必须是一个可以迭代的序列,将列表中的每个元素都追加进来,会在已存在的列表中添加新的列表内容。

向列表尾部追加一个列表,将列表中的每个元素都追加进来,在原有列表上增加。

list.extend(seq)

例如:

a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
a.append(b)

print(a)   # [1, 2, 3, 4, 5, [6, 7, 8, 9, 10]]
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
a.extend(b)

print(a)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
insert():

在指定位置新增数据。

语法:列表序列.insert(位置下标,数据)

name_4 = ['左右', '阿良', '不良人']
name_4.insert(2, "桃夭")

print(name_4)  # 指定位置,加入指定的数据:['左右', '阿良', '桃夭', '不良人']

删除列表元素:

del:

是Python中的关键字,专门用来执行删除操作,不仅可以彻底删除整个列表,还可以删除列表中的某些元素。

name_2 = ['宁姚', '李宝瓶', '陈暖树']
del name_2
print(name_2)    # 报错:因为已被彻底删除

删除指定数据(通过索引):

list_1 = ['汉堡', '拌粉', '凉皮']
del list_1[2]
print(list_1)  # ['汉堡', '拌粉']
print(' ## '.join(list_1))  # 将井号加入列表中,转化成字符串,汉堡 ## 拌粉
pop():

删除指定下标的数据(默认删除最后一个),并返回该数据。

name_4 = ['左右', '阿良', '不良人']
name_4.pop()
print(name_4)  # ['左右', '阿良']

name_4.pop(1)
print(name_4)  # 删除指定位置:['左右']

remove():

根据元素值进行删除,移除列表中某数据的第一个匹配项。

list_2 = [45, 6, 7, 8, 90]
list_2.remove(6)
print(list_2)    # [45, 7, 8, 90]
clear():

清空列表。

"""clear()  清除,没有彻底删除,不报错"""
list_3 = [45, 6, 7, 8, 90]
list_3.clear()
print(list_3)    # []

修改列表元素:

修改单一与一组元素:

name_list = ['张三', '李四', '王五', '赵六']
name_list[0] = '崔东山'

print(name_list)

# 修改第1-4,元素的值,不包括第4个元素
num = [3, 4, 5, 6, 7, 8]
num[1:4] = [111, 222, 555]
print(num)   # [3, 111, 222, 555, 7, 8]
reverse():

逆置。

num = [3, 4, 5, 6, 7, 8]
num.reverse()

print(num)  # [8, 7, 6, 5, 4, 3]
sort():

排序。

reverse = True(降序)

reverse = False(升序,默认值)

语法:列表序列.sort(reverse = False)

li = [1, 3, 4, 5, 6]
li.sort()
print(li)   # 默认为升序,[1, 3, 4, 5, 6]

li.sort(reverse=True)
print(li)  # [6, 5, 4, 3, 1]

列表的复制:

copy():

复制一个列表。

li = [1, 3, 4, 5, 6]
li2 = li.copy()
print(li2)   # [1, 3, 4, 5, 6]

列表的循环遍历:

依次打印列表中的各个数据。

for 循环:

name_list = ['张三', '李四', '王五', '赵六']
for data in name_list:
    print(data)

while 循环:

i = 0
name_list = ['张三', '李四', '王五', '赵六']
while i < len(name_list):
    print(name_list[i])
    i += 1

列表的嵌套:

是指,一个列表中包含了其他的子列表。

name_list = ['张三', '李四', '王五', '赵六', [6, 5, 4, 3, 1]]
print(name_list[4])      # [6, 5, 4, 3, 1]
print(name_list[4][3])   # 3