Python当打之年 | 技巧 | 30个常用Python列表推导式

本文来源公众号“Python当打之年”,仅用于学术分享,侵权删,干货满满。

原文链接:https://mp.weixin.qq.com/s/1DPMijZ3wZlXJWiRU4Ktug

收藏起来吧,方便后续学习和工作!

本期给大家整理了 30个常用Python列表推导式,希望对大家有所帮助,如有疑问或者需要改进的地方可以联系小编。

1. 生成数字序列

numbers = [x for x in range(10)] 
# [0, 1, 2, ..., 9]

2. 生成平方列表

squares = [x**2 for x in range(10)] 
# [0, 1, 4, ..., 81]

3. 生成字典

keys = ["a", "b", "c"]
values = [1, 2, 3]
my_dict = {k: v for k, v in zip(keys, values)} 
# {"a": 1, "b": 2, "c": 3}

4. 过滤偶数

evens = [x for x in range(10) if x % 2 == 0] 

5. 过滤非空字符串

strings = ["hello", "", "world", None]
non_empty = [s for s in strings if s] 

6. 字符串转大写

words = ["apple", "banana", "cherry"]
upper_words = [word.upper() for word in words] 

7. 字符串长度计算

words = ["apple", "banana", "cherry"]
lengths = [len(word) for word in words] 
# [5, 6, 6]

8. 类型转换

nums_str = ["1", "2", "3"]
nums = [int(num) for num in nums_str] 
# [1, 2, 3]

9. 条件表达式

values = [5, 10, 15, 20]
labels = ["High" if x > 10 else "Low" for x in values] 

10. 二维列表展开

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row] 
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

11. 生成笛卡尔积

colors = ["red", "green"]
sizes = ["S", "M"]
products = [(color, size) for color in colors for size in sizes]

12. 多条件筛选

numbers = [x for x in range(20) if x % 2 == 0 if x % 3 == 0] 

13. 排除特定元素

data = [1, 2, 3, None, 4, "error", 5]
clean_data = [x for x in data if isinstance(x, int)] 
# [1, 2, 3, 4, 5]

14. 展开嵌套列表

nested_list = [[1, 2], [3, 4], [5, 6]]
[item for sublist in nested_list for item in sublist]

15. 过滤字典值

original = {"a": 1, "b": 2, "c": 3}
filtered = {k: v for k, v in original.items() if v > 1} 

16. 字符串反转

[''.join(reversed(word)) for word in ['hello', 'world', 'python']]

17. 读取文件行并过滤

lines = [line.strip() for line in open("data.txt") if line.startswith("A")]

18. 提取特定列(CSV)

csv_data = "1,John\n2,Jane\n3,Doe"
names = [row.split(",")[1] for row in csv_data.split("\n")] 

19. 结合 enumerate

words = ["apple", "banana", "cherry"]
indexed = [(i, word) for i, word in enumerate(words)] 

20. 使用 zip

list1 = [1, 2, 3]
list2 = ["a", "b", "c"]
combined = [(x, y) for x, y in zip(list1, list2)] 
# [(1, "a"), (2, "b"), (3, "c")]

21. 调用函数处理元素

defsquare(x):
    return x ** 2

squares = [square(x) for x in range(5)] 
# [0, 1, 4, 9, 16]

22. 生成二维列表

matrix = [[i * j for j in range(3)] for i in range(3)]
# [[0, 0, 0], [0, 1, 2], [0, 2, 4]]

23. 转置矩阵

matrix = [[i * j for j in range(3)] for i in range(3)]
# [[0, 0, 0], [0, 1, 2], [0, 2, 4]]

24. 三元表达式

numbers = [1, 2, 3, 4]
result = ["Even" if x % 2 == 0 else "Odd" for x in numbers] 

25. 多条件分支

values = [12, 5, 20, 3]
categories = ["High" if x > 10 else "Low"if x > 5 else "Very Low" for x in values]

26. 生成素数列表

n = 20
primes = [x for x in range(2, n) if all(x % y != 0 for y in range(2, int(x**0.5)+1))]

27. 字符串处理

sentence = "Hello World Python"
word_lengths = [len(word) for word in sentence.split()] 
# [5, 5, 6]

28. 字典键值反转

original = {"a": 1, "b": 2, "c": 3}
reversed_dict = {v: k for k, v in original.items()} 
# {1: "a", 2: "b", 3: "c"}

29. 生成器表达式转列表

gen = (x**2 for x in range(5))
squares = list(gen) 
# [0, 1, 4, 9, 16]

30. 使用 if-else 在表达式内

numbers = [1, 2, 3, 4]
adjusted = [x * 2 if x % 2 == 0 else x for x in numbers]
# [1, 4, 3, 8]

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值