当前位置:
首页 > 博客 > Python著名的一行文编程 one-liner

Python著名的一行文编程 one-liner

刚刚接触Python时,看前辈用过Python的一行文编程,当时照着用,也是半知半解。现在有有了深入理解,现在总结一下。

1.如果把循环数据写入list,通常是这样。

num_list = []
for i in range(1, 10):
    num_list.append(i)
print(num_list)

执行结果是一个列表

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

用一行文怎么写呢

print([i for i in range(1, 10)])

哇!!!,惊人的简单,这里说的是呈现的样子看着简单,但逻辑一点也不少。如何才能更快理解这种写法。

第一种编程的理解方式是顺序式,就是从上往下一行一行编程。

第二种是从内往外嵌套式,就是先从里边写最小的式子,往外一次扩展。

2.如果我想把列表的元素和索引做成键值对的字典形式,放入列表,怎么办

Python自带函数enumerate可以实现

a_list = ['a', 'b', 'c', 'd', 'e']
for k, i in enumerate(a_list):
    print(str(k) + ' ' + i)

执行结果

0 a
1 b
2 c
3 d
4 e

如果把索引和内容做成这种格式[[{'0': 'a'}, {'1': 'b'}, {'2': 'c'}, {'3': 'd'}, {'4': 'e'}]

老方法

a_list = ['a', 'b', 'c', 'd', 'e']
b_list = []
for k, i in enumerate(a_list):
    b = {}
    b[str(k)] = i
    b_list.append(b)
print(b_list)

一行文,怎么写

print([{str(k): i} for k, i in enumerate(a_list)])

word天,太神奇了,有人问,为什么要列表套字典这种格式。

在爬虫数据整理时,这个还是常用到的,最后数据存储很方便。

3.循环加条件判断,如果我们想统计列表a_list = ['a', 'b', 'c', 'd', 'e', 'a']中字符串a出现的次数,老方法

a_list = ['a', 'b', 'c', 'd', 'e', 'a']
b = 0
for i in a_list:
    if i == 'a':
        b += 1
print(b)

一行文怎么写,第1种:

print({i: a_list.count(i) for i in a_list}['a'])

第2种:下面这个方法,不一定常用,但可以让我们理解很多Python内置函数

print(len(list(filter(lambda x: x == 'a', a_list))))

解释:这里使用了4个函数,lambda是一个匿名函数,filter是一个过滤序列函数。

第3种:更简单更好理解的方法,筛选出字符串a,再构造列表,求出长度。

print(len([i for i in a_list if i == 'a']))

 

(。・`ω´・)美工里的程序猿,程序猿里的印刷工。