牛逼的一行代码生成列表
将数据封装到列表,常用的方法多半如此:
需要多行代码
1 | my_list = [] |
[2, 4, 6, 8, 10, 12, 14]
[4, 8, 12, 16, 20, 24, 28]
人生苦短
对于一些通过循环和特定条件生成的列表
更好的解决方法是用一行代码制定它们
一行代码搞定15以内偶数封装:
1 | my_list = [i for i in range(1, 15) if i % 2 == 0] |
[2, 4, 6, 8, 10, 12, 14]
一行代码将15以内的偶数 * 2,封装
1 | my_list2 = [i * 2 for i in range(1, 15) if i % 2 == 0] |
[4, 8, 12, 16, 20, 24, 28]
总结:
基本形式:
new_list = [表达式 循环语句 条件]
解释意思:
位置1放:表达式
位置2放:循环语句
位置3放:判断条件
就这么简单粗暴
这里的 表达式 不仅仅可以做加减乘除,也可以放一些方法调用,
例如将列表中的单词全部转换为小写:
1 | my_list3 = ['WHAT', 'THE', 'FUCK', 'PYTHON', 'HANDSOMEB', 'NICE'] |
[‘what’, ‘the’, ‘fuck’, ‘python’, ‘handsomeb’, ‘nice’]
生成多个元组,再将多个元组放入列表中
1 | my_list4 = [2, 3, 4, 5, 6, 7, 8, 9, 0] |
[(2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49), (8, 64), (9, 81), (0, 0)]
再来看一个 for 循环的嵌套例子
将两个列表中相同的元素放入新列表
传统方法这样写:
1 | my_list = [1, 2, 4, 5, 6, 7, 8, 9] |
[2, 4, 8, 9]
改为一行代码搞定:
1 | new_list = [i for i in my_list for j in my_list2 if i == j] |
[2, 4, 8, 9]
new_list = [表达式 循环语句 条件]