列表理解与并发循环python

时间:2016-03-02 16:03:50

标签: 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

我不明白的是如何浏览计数清单。我不希望嵌套像:

[self.assertTrue(x[0] == counts[y][0] for x in stake_year for y in counts]

我现在的代码正在运行,但我想更好地理解python并使用应该使用的语言。

2 个答案:

答案 0 :(得分: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])

答案 1 :(得分:5)

唐'吨

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

在您的示例中并非如此(您没有构建任何内容),并且您不应仅使用listcomp作为其副作用,这将是明显的非语音。

转换

非常好
result = []
for line in lines:
    result.append(line.upper())

result = [line.upper() for line in lines]

但不是你的例子。