08列表(list)与元组(tuple) 焦点精选

博客园   2023-04-12 21:26:57


(资料图片仅供参考)

列表(list)与元组(tuple)列表的格式

>- [数据1,数据2,数据3,数据4,......]>- 列表可以存储多个数据,数据之间的逗号以英文分割而且可以数据是不同类型的数据,列表是可变数据类型。>- 空列表 list_data = [] 或者 list_data = list()

列表的创建
# 使用 [ ] 直接创建列表li = [1,2,3,4,"张三","李四"]# 使用 list() 函数创建列表li2 = list("123456789")
列表的常规操作

> 列表的作用是⼀次性存储多个数据,程序员可以对这些数据进行的操作有:增、删、改、查等等

访问列表中的值根据索引访问列表元素
# 使用索引访问列表元素的格式为:name_list[i]name_list = ["张三", "李四", "王五","赵六"]print(name_list[0])print(name_list[1])print(name_list[2])
根据切片访问列表元素
# 使用切片访问列表元素的格式为:name_list[start : end : step]name_list = ["张三", "李四", "王五","赵六"]print(name_list[0:4:2])
常用内置函数
方法描述
append()在列表最后添加一个数据
pop()从列表中删除一个数据,默认删除(根据索引)最后一个
sort()对数据进行排序,默认从小到大排序
reverse()倒置列表
count()统计列表中的某一个数据出现的次数
index()查找索引
extend()把可迭代对象里的数据一个一个追加到列表中
remove()删除某个数据
insert()插入数据
clear()清空列表中的数据
copy()复制列表
# append() 在列表的最后添加一个数据list_data = []new_data = list_data.append("小明")print(new_data)print(list_data)# pop() 从列表中删除一个数据,默认删除(根据索引)最后一个,相当于pop(-1)list_data = [1, 2, 3, 4, 5, 6, 7]data = list_data.pop()print(list_data)    # [1, 2, 3, 4, 5, 6]print(data)       # 7list_data.pop(0)print(list_data)    # [2, 3, 4, 5, 6]# sort(key,reverse) 对数据进行排序,默认从小到大排序,即默认是reverse=False# 其他数据类型也是可以进行排序的,是根据ascll码对应数值大小进行排序list_data = [2, 3, 9, 6, 5, 2, 1]list_data.sort()print(list_data)    # [1, 2, 2, 3, 5, 6, 9]list_data.sort(reverse=True)print(list_data)    # [9, 6, 5, 3, 2, 2, 1]# reverse() 倒置列表list_data = [1, 3, 2]list_data.reverse()print(list_data)    # [2, 3, 1]# count() 统计列表中的某一个数据出现的次数,这里需注意,不仅判断数值大小,其数据类型也相同才会计数list_data = [1, 3, 2, 3, 3, 1, 1, "2", "2", "2"]data = list_data.count(1)   # 这里与前面的方法不同,这个会返回一个值,需要变量来接收print(list_data)    # [1, 3, 2, 3, 3, 1, 1, "2", "2", "2"]print(data)     # 3print(list_data.count(2))# 1print(list_data.count("2"))# 3# index() 查找索引,如果该数据有多个返回最前面的一个list_data = [1, 3, 2, 3, 3, 1, 1, "2", "2", "2"]data = list_data.index(1)   # 这里与前面的方法不同,这个会返回一个值,需要变量来接收print(list_data)    # [1, 3, 2, 3, 3, 1, 1, "2", "2", "2"]print(data)     # 0# extend(可迭代对象) 把可迭代对象里的数据一个一个追加到列表中list_data1 = [1, 3, 2]list_data2 = [4, 5, 6]list_data3 = "小明"print(list_data1 + list_data2)  # [1, 3, 2, 4, 5, 6]list_data1.extend(list_data2)  # 这里与前面的方法不同,这个会返回一个值,需要变量来接收print(list_data1)   # [1, 3, 2, 4, 5, 6]list_data1.extend(list_data3)print(list_data1)   # [1, 3, 2, 4, 5, 6, "小", "明"]# remove() 删除某个数据,有多个时删除最前面的list_data = [1, 2, 3, 2]list_data.remove(2)print(list_data)    # [1, 3, 2]# insert(index, object) 插入数据list_data = [1, 2, 3]list_data.insert(0, "小明")   # 0代表需要插入的位置的索引,”小明“为所需要插入的数据print(list_data)        # ["小明", 1, 2, 3]# clear() 清空列表中的数据list_data = [1, 2, 3]list_data.clear()print(list_data)        # []# copy() 复制列表  深复制 浅复制list_data1 = [1, 2, 3]list_data2 = list_data1list_data2.pop()print(list_data2)   # [1, 2]print(list_data1)   # [1, 2]list_data1 = [1, 2, 3]list_data2 = list_data1list_data2 = list_data1.copy()list_data2.pop()print(list_data2)   # [1, 2]print(list_data1)   # [1, 2, 3]
修改列表元素

>Python 支持通过切片语法给一组元素赋值。在进行这种操作时,如果不指定步长(step 参数),Python 就不要求新赋值的元素个数与原来的元素个数相同;这意味,该操作既可以为列表添加元素,也可以为列表删除元素。

修改单个元素
name_list = ["张三", "李四", "王五","赵六"]name_list[0] = "阿坤"print(name_list)
修改一组元素
nums = [40, 36, 89, 2, 36, 100, 7]#修改第 1~4 个元素的值(不包括第4个元素)nums[1: 4] = [45.25, -77, -52.5]print(nums)
列表的循环遍历for循环
name_list = ["张三", "李四", "王五","赵六"]for i in name_list:    print(i)
while循环
i = 0name_list = ["Tom", "Lily", "Rose"]while i < len(name_list):    print(name_list[i])    i += 1
列表的嵌套

> 所谓列表嵌套指的就是⼀个列表⾥⾯包含了其他的⼦列表

list1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]print(list1[1])# [4, 5, 6]print(list1[1][1])# 5
元组(tuple)

>- (数据1,数据2,数据3,数据4,......)>- 不可变数据类型,元组不可修改,列表中的元组也不可以修改,但元组中的列表可以修改。>- 单个数据的元组,需要定义为tuple_data = (1, ),需要在后面加一个逗号>- 空元组 tuple_data = () 或者 tuple_data = tuple()

元组数据查找根据下标查找
tuple1 = ("aa", "bb", "cc", "bb")print(tuple1[0])
index():查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index⽅法相同。
tuple1 = ("aa", "bb", "cc", "bb")print(tuple1.index("aa"))  # 0
count():统计某个数据在当前元组出现的次数。
tuple1 = ("aa", "bb", "cc", "bb")print(tuple1.count("bb"))  # 1
len():统计元组中数据的个数。
tuple1 = ("aa", "bb", "cc", "bb")print(len(tuple1))  # 4
del删除del,当创建的元组不再使用时,可以通过 del 关键字将其删除
tup = ("python","yyds")print(tup)del tupprint(tup)  # NameError: name "tup" is not defined
元组数据不能修改
# 元组内的直接数据如果修改则⽴即报错# 但是如果元组⾥⾯有列表,修改列表⾥⾯的数据则是⽀持的。tup = (1, 2, 3, [4, 5])print(tup, id(tup))  # (1, 2, 3, [4, 5]) 1455401272328tup[-1].append(6)print(tup, id(tup))  # (1, 2, 3, [4, 5, 6]) 1455401272328
可变类型与不可变类型

>可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。

"""数值"""a = 1print(a, id(a))  # 1 1440395456a = a + 1print(a, id(a))  # 2 1440395488"""字符串"""b = "a"print(b, id(b))  # a 2463434018520b = b.upper()print(b, id(b))  # A 2463434215920"""列表"""li = [1, 2, 3, 4, 5]print(li, id(li))  # [1, 2, 3, 4, 5] 2464553888584li.append(6)print(li, id(li))  # [1, 2, 3, 4, 5, 6] 2464553888584"""元组"""tup = (1, 2, 3, [4, 5])print(tup, id(tup))  # (1, 2, 3, [4, 5]) 2464553829384tup[-1].append(6)print(tup, id(tup))  # (1, 2, 3, [4, 5, 6]) 2464553829384

相关新闻