пока цикл печати списка в Python

1

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

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] там просто печатает именно это?

  • 1
    Я не вижу причин, по которым этот вопрос был -1d. +1 для компенсации.
Теги:
loops

3 ответа

5

Оператор 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

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

1

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

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

Лучшим способом написания этого кода является

for idx, item in enumerate(demolist):
    print 'demolist[%d] = %s' % (idx, item)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню