有没有办法使用制作列表的简短版本在一行列出 2 个项目。
例如,我想写类似的东西
G3 = [(i,j) for i in Primes and j in G2 if dig_sum(i,j) == True and con_test(i,j) == True ]
编辑:我应该提到这给了我错误
NameError: name 'j' is not defined
here i is an int and j is tuple
我的主要目的是得到类似的东西
G = [(i,j,k),(g,h,k)...]
我知道我的更新代码会给出类似的东西
G = [(i,(j,k)),(g,(h,k))...]
但我想我可以稍后更改它。
这是长版本
G3 = []
for i in Primes:
for j in G2:
if dig_sum(i,j) == True and con_test(i,j) == True:
G3.append((i,j[0],j[1]))
print(G3)
您可以使用*
在元组中解压缩,并切换and
,以便for
在列表推导式中具有嵌套的 for 循环。您也不需要在if
块中使用== True
。
G3 = [(i,*j) for i in Primes for j in G2 if dig_sum(i,j) and con_test(i,j)]
注意:这可能不适用于旧版本的Python。我不确定它是什么时候引入的。