2016-03-02 2 views
5

Простой вопрос, так как я просто хочу написать больше pythonic-кода. Я хочу, чтобы преобразовать следующее в списке пониманиепонимание списка с параллельными циклами python

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] 

код у меня сейчас работает, но я хотел бы понять питон лучше и использовать язык, как его следует использовать.

+2

кажется мне, как вы хотите использовать 'перечисления()' – gtlambert

+1

описаний списков предназначены для создания списков, а не для выполнения петель. – zondo

+1

Перечисление было тем, что я хочу. Я не должен был называть это пониманием списка, но это все часть обучения. Всем спасибо. – cryptoref

ответ

7

Чем больше вещий способ использовать в вашем случае использовать 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]) 
+0

Это прекрасно и перечисление теперь имеет смысл. Спасибо @minitoto. – cryptoref

+0

добро пожаловать – tinySandy

5

Не надо.

Пояснения по спискам не по определению больше pythonic, чем простые циклы - только если эти петли предназначены для создания новых списков (или dicts, sets и т. Д.), И если listcomp легче читать, чем цикл.

Это не так в вашем примере (вы ничего не строите), и вы не должны использовать listcomp только для своих побочных эффектов, что было бы явно бессовестным.

Так это хорошо, чтобы преобразовать

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

в

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

, но не ваш пример.

+0

Спасибо за комментарии Тим, я старый динозавр, который с удовольствием изучает питон, и путешествие действительно забавно. Я продолжаю пытаться писать ассемблер, и это не всегда лучший способ в python :) – cryptoref

Смежные вопросы