是否有一种方法可以使用制作清单的简短版本在一行中列出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)...]
我知道我的uppser代码会给出类似的信息
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)
答案 0 :(得分:3)
您可以使用*
解开元组文字,并为and
切换for
,以在列表推导中嵌套嵌套循环。您也不需要在== True
块中使用if
。
G3 = [(i,*j) for i in Primes for j in G2 if dig_sum(i,j) and con_test(i,j)]
n.b。这可能不适用于旧版本的python。我不确定它何时引入。