gpt4 book ai didi

python - 将循环 block 转换为列表理解

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:15 25 4
gpt4 key购买 nike

我想转换这个片段

for val in G[k]:
if val in span[k]:
result.append((val,col))
elif val in G[k] and val not in span[k] and S[val][k] != 'col':
result.append((val,row))

进入列表理解。但这给了我错误:

[(val,col) if val in span[k] else (val,row) if val in G[k] and val not in span[k] and S[val][k] != 'col' for val in G[k]]

那么正确的语法是什么,如果有 i.e.

最佳答案

您正在使用没有 else 部分的条件表达式;这是语法错误。

正确的翻译是:

[(val,col) if val in span[k] else (val,row) for val in G[k] if val in span[k] or S[val][k] != 'col']

例如首先过滤掉与您的两个条件不匹配的所有内容,然后在两个分支之间选择确实导致某些内容添加到输出中的值。

我简化了条件;在第二个表达式中有一些冗余测试(val in G[k] is always true for a loop over G[k] 并且如果val in span[k]not True 那么逆 val not in span[k] 肯定是 True 也不需要再次测试。

就我个人而言,我发现显式 for 循环更具可读性,但您至少可以用相同的方式简化它:

for val in G[k]:
if val in span[k]:
result.append((val,col))
elif S[val][k] != 'col':
result.append((val,row))

关于python - 将循环 block 转换为列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19839560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com