列表的创建:
列表,是Python中最常用的数据类型之一,可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型创建一个列表,只要把逗号分隔的不同数据项使用方括号括起来即可。
语法:
使用 [ ] 直接创建列表
li = [1, 2, 4, 5]
使用list() 函数创建列表
li2 = list('122436')
特点:
列表可以一次性存储多个数据,且可以为不同的数据类型。
列表的常用操作:
增、删、改、查...
访问列表中的值:
- 根据索引访问列表元素
"""使用索引访问列表元素的格式为: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