头图

大家好,我是涛哥,本文内容来自 涛哥聊Python ,转载请标原创。

更多Python学习内容:http://ipengtao.com

列表是Python中最常用的数据结构之一,它用于存储有序的元素集合。Python提供了多种方式来创建和操作列表,使得列表在数据处理、存储和操作中非常灵活。本文将详细介绍Python列表创建的各种技巧,包括基础创建方法、列表推导式、内置函数和高级创建技巧,并包含具体的示例代码,帮助全面掌握Python列表的使用方法。

列表的基础创建方法

直接创建

最简单的创建列表的方法是直接使用方括号[]将元素包围起来。

# 创建一个包含多个元素的列表
my_list = [1, 2, 3, 4, 5]
print(my_list)  # 输出:[1, 2, 3, 4, 5]

# 创建一个空列表
empty_list = []
print(empty_list)  # 输出:[]

使用list()函数创建

list()函数可以将其他数据类型转换为列表。

# 使用list()函数将字符串转换为列表
str_list = list("hello")
print(str_list)  # 输出:['h', 'e', 'l', 'l', 'o']

# 使用list()函数将元组转换为列表
tuple_list = list((1, 2, 3))
print(tuple_list)  # 输出:[1, 2, 3]

列表推导式

基本列表推导式

# 使用列表推导式创建一个包含0到9的列表
squares = [x**2 for x in range(10)]
print(squares)  # 输出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

带条件的列表推导式

# 创建一个包含0到9中所有偶数的列表
evens = [x for x in range(10) if x % 2 == 0]
print(evens)  # 输出:[0, 2, 4, 6, 8]

嵌套列表推导式

# 创建一个嵌套列表,每个子列表包含0到2的平方
nested_list = [[x**2 for x in range(3)] for _ in range(3)]
print(nested_list)  # 输出:[[0, 1, 4], [0, 1, 4], [0, 1, 4]]

使用内置函数创建列表

使用range()函数创建

range()函数生成一个整数序列,常用于创建数字列表。

# 使用range()函数创建一个包含0到9的列表
range_list = list(range(10))
print(range_list)  # 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

使用map()函数创建

map()函数将一个函数应用到所有列表元素上,生成一个新列表。

# 使用map()函数将字符串列表转换为大写
words = ["hello", "world"]
upper_words = list(map(str.upper, words))
print(upper_words)  # 输出:['HELLO', 'WORLD']

高级列表创建技巧

使用itertools模块创建

itertools模块提供了生成器函数,用于高效地创建和操作列表。

import itertools

# 使用itertools.cycle()创建一个无限循环的列表生成器
cycle_gen = itertools.cycle([1, 2, 3])
for _ in range(6):
    print(next(cycle_gen), end=' ')  # 输出:1 2 3 1 2 3
print()

# 使用itertools.repeat()创建一个重复元素的列表生成器
repeat_gen = itertools.repeat(5, 3)
print(list(repeat_gen))  # 输出:[5, 5, 5]

使用生成器表达式创建

生成器表达式类似于列表推导式,但返回的是一个生成器对象,可以节省内存。

# 创建一个生成器表达式
gen_exp = (x**2 for x in range(10))
print(list(gen_exp))  # 输出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

创建二维列表

二维列表可以看作列表的列表,用于存储矩阵或表格数据。

# 创建一个3x3的二维列表
matrix = [[0 for _ in range(3)] for _ in range(3)]
print(matrix)  # 输出:[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

列表操作的常用技巧

列表元素访问与修改

可以通过索引访问和修改列表元素。

my_list = [1, 2, 3, 4, 5]
print(my_list[0])  # 输出:1

# 修改列表元素
my_list[0] = 10
print(my_list)  # 输出:[10, 2, 3, 4, 5]

列表切片

列表切片用于获取子列表。

my_list = [1, 2, 3, 4, 5]
print(my_list[1:4])  # 输出:[2, 3, 4]

# 切片赋值
my_list[1:4] = [20, 30, 40]
print(my_list)  # 输出:[1, 20, 30, 40, 5]

列表合并与复制

可以使用+运算符合并列表,使用*运算符复制列表。

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

# 合并列表
merged_list = list1 + list2
print(merged_list)  # 输出:[1, 2, 3, 4, 5, 6]

# 复制列表
copied_list = list1 * 2
print(copied_list)  # 输出:[1, 2, 3, 1, 2, 3]

列表推导式的常见应用

列表推导式不仅用于创建列表,还可以用于转换和过滤列表。

示例:过滤和转换

# 过滤掉负数并将剩余元素平方
numbers = [-2, -1, 0, 1, 2]
filtered_squared = [x**2 for x in numbers if x >= 0]
print(filtered_squared)  # 输出:[0, 1, 4]

示例:嵌套列表展开

# 将嵌套列表展开为一维列表
nested_list = [[1, 2, 3], [4, 5], [6, 7, 8]]
flattened = [item for sublist in nested_list for item in sublist]
print(flattened)  # 输出:[1, 2, 3, 4, 5, 6, 7, 8]

处理大数据的技巧

在处理大数据时,生成器表达式和itertools模块非常有用,可以节省内存。

示例:使用生成器处理大数据

# 创建一个大数据生成器
large_gen = (x for x in range(1000000))

# 逐个处理数据
for x in large_gen:
    if x % 100000 == 0:
        print(x)

示例:使用itertools处理大数据

import itertools

# 创建一个大数据生成器并进行切片
large_gen = (x for x in range(1000000))
sliced_gen = itertools.islice(large_gen, 1000, 1010)

# 打印切片结果
print(list(sliced_gen))  # 输出:[1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009]

总结

本文详细介绍了Python列表创建的多种技巧,包括基础创建方法、列表推导式、内置函数和高级创建技巧。通过具体的示例代码,展示了如何直接创建列表、使用list()函数、range()函数和map()函数创建列表,并介绍了生成器表达式和itertools模块的高级用法。掌握这些技巧可以帮助大家在编写Python代码时更加高效、简洁地处理数据。列表作为Python中最常用的数据结构之一,在数据存储、处理和操作中具有重要作用。


涛哥聊Python
59 声望39 粉丝