Python:简短的实现方式

时间:2014-04-15 10:44:43

标签: python

我有一个小问题:目前,我会做以下事情:

", ".join((item[0][i][1] for i in range(len(item[0]))))

如何插入附加语句"if item[0][i][1] not in blockedList"

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

只需将其添加到列表理解中:

", ".join(item[0][i][1] for i in range(len(item[0])) if item[0][i][1] not in blockedList)

注意

您可以按如下方式简化代码:

', '.join(i[1] for i in item[0] if i[1] not in blockedList)

答案 1 :(得分:0)

这是一个连接二维数组/列表的简单示例。

blocked = [(0,0,0,1),(0,0,1,1),(0,1,0,1),(0,1,1,1),(1,0,0,1),(1,0,1,1),(1,1,1,1)]
data = [(0,0,0,0),(0,0,0,1),(0,0,1,0),(0,0,1,1)]

print ':'.join([''.join(str(col) for col in row) for row in data if row not in blocked])
  

0000:0010

我为列表/数组的递归连接设计了一个简单的语法。这绝不是官方语法。请参阅以下官方链接。

LIST = [FUNCTION(ATOM) for ATOM in LIST if CONDITION]
STR = 'DELIM'.join(LIST)

现在,如果您注意到,现在可以轻松地将LIST替换为LIST STR语法。


以下是解析的官方python语法规则:

Python 2语法: https://docs.python.org/2/reference/grammar.html
Python 3语法: https://docs.python.org/3/reference/grammar.html