пока цикл печати списка в Python - PullRequest
1 голос
/ 06 ноября 2011

следующий код:

c=0 while c < len(demolist):
    print ’demolist[’,c,’]=’,demolist[c] 
    c=c+1

Создает этот вывод:

demolist[ 0 ]= life
demolist[ 1 ]= 42
demolist[ 2 ]= the universe
demolist[ 3 ]= 6
demolist[ 4 ]= and
demolist[ 5 ]= 7
demolist[ 6 ]= everything

Что случилось с форматом demolist[',c,'], который печатается в цикле while? Почему это дает число в скобках, тогда как demolist[c] там просто печатает это точно?

Ответы [ 3 ]

5 голосов
/ 06 ноября 2011

Оператор print получает четыре аргумента (через запятую):

’demolist[’   # string
c             # integer
’]=’          # string
demolist[c]   # result of list access

Более понятный способ написать эту строку:

print 'demolist[ {0} ]= {1}'.format(c, demolist[c])

Посмотрите, как он работает в режиме онлайн: ideone


Примечание: Вы также можете рассмотреть возможность использования здесь enumerate вместо цикла while.

for n, elem in enumerate(demolist):
    print 'demolist[ {0} ]= {1}'.format(n, elem)

Посмотрите, как это работает: ideone

2 голосов
/ 06 ноября 2011

print ’demolist[’,c,’]=’,demolist[c] печатает строку "demolist[", значение c, строку "]=" и значение demolist[c], разделенные пробелами.

1 голос
/ 06 ноября 2011

c - это целое число. demolist[c] возвращает значение по индексу c из списка, demolist.

print ’demolist[’,c,’]=’ печатает серию объектов с неявным преобразованием в строку (поэтому вам не нужно явно преобразовывать c (целое число) в строку).

Лучший способ написания этого кода -

for idx, item in enumerate(demolist):
    print 'demolist[%d] = %s' % (idx, item)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...