[Python 基础系列] List 简介

Posted GoldenaArcher

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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 "<stdin>", line 1, in <module>
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 循环。

以上是关于[Python 基础系列] List 简介的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介创建消息生产者创建消息消费者自定义消息通道分组与持久化设置 RoutingKey)(代码片段

Python 基础2 - 列表

Python全栈自动化系列之Python编程基础(列表元组字典)

python基础系列一:字符串

Python零基础学习系列之二--Python介绍及环境搭建

python的基础03 列表list