Python 使用条件语句的嵌套for循环的列表理解?

Python 使用条件语句的嵌套for循环的列表理解?,python,list,for-loop,list-comprehension,Python,List,For Loop,List Comprehension,我正在学习列表理解,虽然我已经看到了很多关于回答我的问题的讨论,但我还没有看到下面这样的代码被制作成列表理解 # 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 exa

我正在学习列表理解,虽然我已经看到了很多关于回答我的问题的讨论,但我还没有看到下面这样的代码被制作成列表理解

# 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

你没有列出任何清单。因此,创建一个元素是毫无意义的。在您的示例中,您希望获得什么列表?例如,如果一个元素是
“##”
,则使用
split
,这一事实并不保证需要输出。