List 是 Python 中最常使用的数据结构之一,它的特性有:
-
有序,可以用索引进行遍历
-
存储多种数据结构
创建数组可以使用 [],如:
test_list = ["Jon Snow", "Winterfell", 30] print(jon_snow) # ['Jon Snow', 'Winterfell', 30] print(jon_snow[0]) # Jon Snow print(len(jon_snow)) # 3
或者将一个 可迭代(iterable) 传入到 list() 函数中,如:
num_seq = range(0, 10) # 0-9 的序列,range的结果是一个可迭代对象 num_list = list(num_seq) print(num_list) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]数组嵌套(多重数组)
数组可以存储多重数据结构,自然也包括数组:
list_of_list = [[1,2,3],[4,5,6],[7,8,9]] print(list_of_list) # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
同样,多重数组也可以使用索引访问:
list_of_list = [[1,2,3],[4,5,6],[7,8,9]] print(list_of_list[1]) # [4, 5, 6] print(list_of_list[1][1]) # 5合并数组
Python 中可以直接使用 + *** 作符去合并数组,这种方法不会修改原数组:
part_A = [1, 2, 3, 4, 5] part_B = [6, 7, 8, 9, 10] merged_list = part_A + part_B print(merged_list) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
也可以使用 extend() 去拼接数组,这样会修改原数组:
part_A = [1, 2, 3, 4, 5] part_B = [6, 7, 8, 9, 10] part_A.extend(part_B) print(part_A) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]常用的数组 *** 作 增
直接在数组尾部新增一个新的值,可以使用 append:
num_list = [] num_list.append(1) num_list.append(2) num_list.append(3) print(num_list) # [1, 2, 3]
想要将值添加到某个特定的索引,可以使用 insert(index, element) 进行 *** 作,使用 insert(index, element) 会将早原来的索引及其后的值,向后移动 1 位:
num_list = [1, 2, 3, 5, 6] num_list.insert(3, 4) print(num_list) # [1, 2, 3, 4, 5, 6],5和6向后移动了一位删
pop() 会删除 list 中的最后一个值:
test_list = [1, 2, 3, 4, 5] popped = test_list.pop() print(popped) # 5 print(test_list) # [1, 2, 3, 4]
使用 remove(value) 会删除参数中指定的值。注意,如果 list 中有重复的值,remove(value) 只会删除第一个值,而不会删除所有的值:
test_list = [1,2,3,4,5,1] test_list.remove(1) print(test_list) # [2, 3, 4, 5, 1]改
修改 list 的值可以直接通过索引完成:
test_list = [1,2,3,4,5,5] test_list[5] = 6 print(test_list) # [1, 2, 3, 4, 5, 6]查
如果只是单纯想知道 List 中是否存在某些值,可以使用 in 关键字:
nums = [1,2,3,4,5,6,7,8] 1 in nums # True
需要寻找索引可以使用 index() 方法:
nums.index(4) # 3 nums.index(10) Traceback (most recent call last): File "截取(list slicing)", line 1, in ValueError: 10 is not in list
List Slicing 的方法与截取字符串相似:
nums = [1,2,3,4,5,6,7,8] print(nums[0:5]) # [1, 2, 3, 4, 5] print(nums[::-1]) # [8, 7, 6, 5, 4, 3, 2, 1]排序
使用 sort() 会修改原本的数组:
unsorted_list = [1,412,53,6,2,6,8,234,59] unsorted_list.sort() unsorted_list # [1, 2, 6, 6, 8, 53, 59, 234, 412]List Comprehension
List Comprehension 是一个可以在新建数组时使用 for 循环和条件的小技巧,使用 List Comprehension 会返回一个新的数组。
其语法为:
[expression for loop if condition]
如:
[x ** 2 for x in range(10)] # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # 等同于 nums = [1,2,3,4,5,6,7,8,9] new_nums = [] for n in nums: new_nums.append(n ** 2)
使用 if 的语法:
[x ** 2 for x in range(10) if x % 2 == 0] # [0, 4, 16, 36, 64]
List Comprehension 的嵌套:
list1 = [30, 50, 110, 40, 15, 75] list2 = [10, 60, 20, 50] [(n1, n2) for n1 in list1 for n2 in list2 if n1 + n2 > 100] # [(50, 60), (110, 10), (110, 60), (110, 20), (110, 50), (75, 60), (75, 50)]
相当于跑了两遍 for 循环。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)