2024-09-30 01:23:51 发布
网友
我是python的自学者,我正在做一个练习,它的解决方案发布在this线程中。有人能把这段代码翻译成英语吗?当我学习if语句时,我从未遇到过这种语法。在
consonants = 'bcdfghjklmnpqrstvwxz' return ''.join(l + 'o' + l if l in consonants else l for l in s)
这是一段较长的代码,作为生成器编写。这是它看起来的样子,更拉长。在
consonants = 'bcdfghjklmnpqrstvwxz' ls = [] for l in s: if l in consonants: ls.append(l + 'o' + l) else: ls.append(l) return ''.join(ls)
它循环遍历s,并检查l是否在字符串consonants中。如果是,则将l + 'o' + l推送到列表中,如果不是,则只推l。在
s
l
consonants
l + 'o' + l
然后使用''.join将结果联接到一个字符串中,并返回。在
''.join
更准确地说(作为发电机):
其中gencons只是我给生成器函数指定的任意名称。在
gencons
这段代码既不包含if语句,也不包含for循环。因为语句不能嵌入表达式中,例如作为参数传递给join的表达式,所以您可以很容易地判断。在
if
for
join
if是条件表达式的一部分,其形式为x if y else z。与if语句不同,else是必需的,因为无论{}是否为真,表达式都必须有一个值。如果y为真,则值为x;否则,值为z。在本例中,值要么是l + 'o' + l(当l是辅音时)要么是l本身。在
x if y else z
else
y
x
z
for关键字用于表示生成器表达式,您可以将其视为基于另一个序列生成值序列的方法。这里,我们从某个序列s开始,并为该序列中的每个字符l生成另一个值。生成的序列由join用来生成一个新字符串。在
(稍微偏离主题,但是显式地将列表而不是生成器传递给join更有效,因为无论如何,它都需要先构建一个列表,以计算出要为结果字符串分配多少空间。在
)
这是一段较长的代码,作为生成器编写。这是它看起来的样子,更拉长。在
它循环遍历
s
,并检查l
是否在字符串consonants
中。如果是,则将l + 'o' + l
推送到列表中,如果不是,则只推l
。在然后使用
''.join
将结果联接到一个字符串中,并返回。在更准确地说(作为发电机):
^{pr2}$其中
gencons
只是我给生成器函数指定的任意名称。在这段代码既不包含
if
语句,也不包含for
循环。因为语句不能嵌入表达式中,例如作为参数传递给join
的表达式,所以您可以很容易地判断。在if
是条件表达式的一部分,其形式为x if y else z
。与if
语句不同,else
是必需的,因为无论{y
为真,则值为x
;否则,值为z
。在本例中,值要么是l + 'o' + l
(当l
是辅音时)要么是l
本身。在for
关键字用于表示生成器表达式,您可以将其视为基于另一个序列生成值序列的方法。这里,我们从某个序列s
开始,并为该序列中的每个字符l
生成另一个值。生成的序列由join
用来生成一个新字符串。在(稍微偏离主题,但是显式地将列表而不是生成器传递给
^{pr2}$join
更有效,因为无论如何,它都需要先构建一个列表,以计算出要为结果字符串分配多少空间。在)
相关问题 更多 >
编程相关推荐