2016-02-11 5 views
3

Im пытается изменить список строк, чтобы элементы имели номера элементов спереди, начиная с 1.Добавление чисел в список строк

Например:

['John', 'Eric', 'Samuel'] становится ['1 John', '2 Eric', '3 Samuel']

Вот код, я до сих пор:

for i in range(len(rader)): 
    rader[i] = '{}{}{}'.format(i," ",rader[i]) 

Это добавляет несколько раньше, но проблема в том, что она дает первый номер строки нуль, как мне обойти это?

+3

серьезно? '... format (i + 1," ", rader [i])' ... Python использует массивы с нулевым основанием и диапазоны – kdopen

ответ

-1

Вы можете передать дополнительные аргументы для функции диапазона, например:

for i in range(1,len(rader)) 

More about range function

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

+0

Что пропустит первый элемент – kdopen

+0

@kdopen: Правда, это не сработает с остальная часть кода, но я хотел показать, что функция диапазона может быть вызвана с некоторыми дополнительными параметрами. – erhesto

3

Вы можете передать i + 1 в format():

for i in range(len(rader)): 
    rader[i] = '{}{}{}'.format(i + 1," ",rader[i]) 
    #       ^^^^^ 

Но существует более удобный способ:

for i, name in enumerate(rader): 
    rader[i] = '{} {}'.format(i + 1, name) 
1

Вы можете использовать enumerate, просто указать start и он будет исходить из 1:

rader = ['{} {}'.format(i,s) for i,s in enumerate(rader, start=1)] 

И если вы просто хотите print это таким образом:

print(*('{} {}'.format(i,s) for i,s in enumerate(rader, start=1)), sep=', ') 

Выход:

1 John, 2 Eric, 3 Samuel 
Смежные вопросы