列表理解与并发循环python

cry*_*ref 5 python loops list-comprehension

简单的问题,因为我只想写更多的pythonic代码.我想将以下内容转换为列表理解

index_row = 0
for row in stake_year.iterrows():
    self.assertTrue(row[0] == counts[index_row][0])
    self.assertTrue(row[1][0] == counts[index_row][1])
    index_row += 1
Run Code Online (Sandbox Code Playgroud)

我不明白的是如何通过计数列表.我不希望嵌套为:

[self.assertTrue(x[0] == counts[y][0] for x in stake_year for y in counts]
Run Code Online (Sandbox Code Playgroud)

我现在的代码正在工作,但我想更好地理解python并使用应该使用的语言.

mid*_*ori 7

在您的情况下使用更pythonic的方法是使用enumerate:

for index_row, row in enumerate(stake_year.iterrows()):
    self.assertTrue(row[0] == counts[index_row][0])
    self.assertTrue(row[1][0] == counts[index_row][1])
Run Code Online (Sandbox Code Playgroud)


Tim*_*ker 5

别.

列表推导不是简单的pythonic而不是简单的循环 - 只有这些循环被设计为构建新的列表(或dicts,sets等),并且listcomp比循环更容易阅读.

在你的例子中不是这种情况(你没有构建任何东西),你不应该只为其副作用使用listcomp,这显然是unpythonic.

所以转换很好

result = []
for line in lines:
    result.append(line.upper())
Run Code Online (Sandbox Code Playgroud)

result = [line.upper() for line in lines]
Run Code Online (Sandbox Code Playgroud)

但不是你的榜样.