11  列表

11.1 列表

11.1.1 合并列表

# extend()方法

list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)

list1
[1, 2, 3, 4, 5, 6]
# + 
list1 = [1, 2, 3]
list2 = [4, 5, 6]
new_list = list1 + list2

new_list
[1, 2, 3, 4, 5, 6]

11.1.2 打包

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
list(zipped)  
[(1, 'a'), (2, 'b'), (3, 'c')]
# 长度就短原则

list1 = [1, 2, 3]
list2 = ['a', 'b']
zipped = zip(list1, list2)
list(zipped)
[(1, 'a'), (2, 'b')]

11.1.3 删除列表中的空字符元素

# 列表中包含空字符串
my_list = ["apple", "", "banana", " ", "cherry", ""]

# 使用列表推导式过滤空字符串
filtered_list = [item for item in my_list if item.strip()]

# 输出过滤后的列表
filtered_list
['apple', 'banana', 'cherry']
# 列表中包含空字符串
my_list = ["apple", "", "banana", " ", "cherry", ""]

# 使用filter()函数过滤空字符串
filtered_list = list(filter(lambda x: x.strip(), my_list))

# 输出过滤后的列表
filtered_list
['apple', 'banana', 'cherry']

11.1.4 解包

11.1.4.1 显性解包(确定元素的个数)

# 列表解包
my_list = [1, 2, 3]
a, b, c = my_list
print(a)  # 输出 1
print(b)  # 输出 2
print(c)  # 输出 3


# 列表解包可用于交换变量的值
x = 10
y = 20
x, y = y, x
print(x)  # 输出 20
print(y)  # 输出 10
1
2
3
20
10

11.1.4.2 非显性解包(不确定元素的个数)

*

# 解包操作
my_list = [1, 2, 3]
print(*my_list)  # 输出 1 2 3
1 2 3
用于扩展迭代
# 扩展迭代
my_list1 = [1, 2, 3]
my_list2 = [4, 5, 6]
new_list = [0, *my_list1, *my_list2, 7]
print(new_list)  
[0, 1, 2, 3, 4, 5, 6, 7]
用于可变参数
# 可变参数
def my_function(*args):
    for arg in args:
        print(arg)

my_function(1, 2, 3)  # 输出 1 2 3
1
2
3
在函数调用中使用解包操作
# 在函数调用中使用解包操作
def my_function(a, b, c):
    print(a, b, c)

my_list = [1, 2, 3]
my_function(*my_list)  # 等同于 my_function(1, 2, 3)
1 2 3
拆分字符串
# 拆分字符串
my_string = "hello"
print(*my_string)  # 输出 h e l l o
h e l l o

11.1.5 切片

在 Python 中,切片操作可以使用三个参数list[a:b:c]来指定子序列的选取范围:

  1. 起始位置(Start):切片的起始位置,即要选取的子序列的起始索引(包含在内)。如果不指定起始位置,则默认为序列的开头(索引 0)。

  2. 结束位置(Stop):切片的结束位置,即要选取的子序列的结束索引(不包含在内)。如果不指定结束位置,则默认为序列的结尾。

  3. 步长(Step):切片的步长,即每次选取元素时移动的距离。默认步长为 1,表示连续选取元素。可以使用负数步长来反向选取元素。

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 从第2个元素开始取所有元素
my_list[1:]  
[1, 2, 3, 4, 5, 6, 7, 8, 9]
# 取所有元素
my_list[:]  
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 取所有元素
my_list[::] 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 取所有元素,反转元素
my_list[::-1] 
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
# 取至倒数第2个元素开始取所有元素
my_list[:-1]  
[0, 1, 2, 3, 4, 5, 6, 7, 8]
# 取所有偶数元素
my_list[::2] 
[0, 2, 4, 6, 8]
# 取所有奇数元素
my_list[1::2] 
[1, 3, 5, 7, 9]