[Python 基础系列] List 简介

[Python 基础系列] List 简介,第1张

[Python 基础系列] List 简介 # [Python 基础系列] List 简介

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 "", line 1, in 
ValueError: 10 is not in list
截取(list slicing)

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 循环。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4677459.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存