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并使用应该使用的语言.
在您的情况下使用更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)
别.
列表推导不是简单的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)
但不是你的榜样.