加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Python骚操纵从列表推导和天生器表达式出发

发布时间:2021-06-01 19:08:39 所属栏目:编程 来源:互联网
导读:列表推导 Python说话魅力在于简捷,这能从最常见的建设列表浮现出来,好比我们想把字符串abc转换成新列表[a, b, c],通例写法: symbols= abc codes=[] for symb

Python骚操纵从列表推导和天生器表达式出发

列表推导

Python说话魅力在于简捷,这能从最常见的建设列表浮现出来,好比我们想把字符串"abc"转换成新列表["a", "b", "c"],通例写法:

symbols = "abc" 

codes = [] 

for symbol in symbols: 

    codes.append(symbol) 

print(codes)  # ["a", "b", "c"] 

用到了for轮回和列表append要领。现实上可以不消append要领,直接:

symbols = "abc" 

codes = [symbol for symbol in symbols] 

这叫做列表推导,是越发Pythonic的写法。

无论是编写服从照旧可阅读性,列表推导都更胜一筹,可以说是构建列表的快捷方法。可是不能滥用,通用原则是,假如列表推导的代码高出了两行,就要思量用append了。这不是划定,完全可以依附自我兴趣来选择。

笛卡尔积是指多个序列中元素全部组合,我们用列表推导来实现笛卡尔积:

colors = ["black", "white"] 

sizes = ["S", "M", "L"] 

tshirts = [(color, size) for color in colors for size in sizes] 

一行代码搞定!Life is short,use Python,list comprehension is wonderful,amazing。

留意这行代码有两个for轮回,等价于:

for color in colors: 

    for size in sizes: 

运行功效是:

[('black', 'S'), ('black', 'M'), ('black', 'L'), ('white', 'S'), ('white', 'M'), ('white', 'L')] 

假如换一下次序:

[(color, size) for color in colors for size in sizes] 

等价于:

for size in sizes: 

    for color in colors: 

运行功效是差异的,调查第2个元素:

[('black', 'S'), ('white', 'S'), ('black', 'M'), ('white', 'M'), ('black', 'L'), ('white', 'L')] 

天生器表达式

一样平常打仗到天生器时,都要讲yield要害字,看似有点伟大,然而却很简朴,天生器就像列表推导一样,只不外是用来天生其他范例序列的,好比元组:

symbols = "abc" 

codes = (symbol for symbol in symbols) 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读