繁体   English   中英

列出带有条件语句的嵌套 for 循环的理解?

[英]List comprehension for nested for loops with conditional statements?

我正在研究列表理解,虽然我已经看到很多讨论来回答我的问题,但我还没有看到像下面这样的代码变成了列表理解。

# example array and counter var

rotated = [['#', '.', 'X', 'X', 'X'], ['.', '.', 'X', 'X', 'X'], ['X', '#', '#', '.', '.'], ['X', 'X', 'X', 'X', 'X']]
shot = 0

# I dont know how to turn the example code below this into its list comprehension form. 

for i in rotated:
        for j in i:
            if j == "#":
                break
            elif j == "X":
                shot += 1

我知道不只是按原样使用它(嵌套的 for 循环)有点毫无意义,但我想看看是否可以编写等效的列表理解或生成器表达式。

您可以通过以下方式在一行中执行此操作 - 使用''.join()从每个子列表中的字符创建一个字符串,使用split('#')[0]将这些转换为第一个之前的所有内容#的出现,然后是count('X') ,它给出了字符串中X个字符的数量。 最后,我们使用sum()将所有数字相加。

>>> rotated = [['#', '.', 'X', 'X', 'X'], ['.', '.', 'X', 'X', 'X'], ['X', '#', '#', '.', '.'], ['X', 'X', 'X', 'X', 'X']]
>>> sum(''.join(x).split('#')[0].count('X') for x in rotated)
9

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM