2016-06-05 3 views
1

Я пытаюсь создать новый список индексов, перечислив предыдущий список. В принципе, я хочу:Перечислить список, чтобы создать новый список индексов?

Перечислить список элементов для получения индексов для каждого элемента. Я закодирован следующим образом:

board = ["O","O","O","O","O"] 
for index,y in enumerate(board): 
    print(index,end=" ") 

, который дает:

0 1 2 3 4 

Теперь я хочу, чтобы эти цифры в новый список, но понятия не имеют, как это сделать.

Спасибо! Извините за вопрос, я все еще новичок и просто пытаюсь найти вещи.

+0

Вы не должны извиняться за вопрос. Хотя вы, возможно, нашли решение, выполнив поиск немного больше, вы опубликовали хороший качественный вопрос, который был хорошо отформатирован. Получайте удовольствие, изучая Python! – Nicarus

ответ

1

Вы должны, вероятно, просто сделать выбор нужной длины:

board = ["O","O","O","O","O"] 
indices = list(range(len(board))) 
print(indices) 
> [0, 1, 2, 3, 4] 
+0

Ах, это намного проще. Но как я мог напечатать его так, чтобы он выглядел как 0 1 2 3 4, а не [0,1,2,3,4?]? – greatdonut

+0

'print ('.join (индексы))' https://docs.python.org/3.5/library/stdtypes.html#str.join – Nicarus

+0

Спасибо! Я пробовал это и, к сожалению, получил ошибку, так как элементы в новом списке являются целыми числами. Я только что закодировал print («.join (str (i) для i в новом)) и получил его, хотя, поэтому он, наконец, работает сейчас! – greatdonut

0

Если вы просто хотите, чтобы все номера вы можете использовать это:

indices = list(range(len(board))) 

Если передать один номер в диапазоне его вернет итератор с номерами 0 до прошедшего числа (исключая). После этого мы превращаем его в список со списком.

0

Вы можете использовать список понимание, чтобы сделать это:

result = [index for index,y in enumerate(board)] 

В качестве альтернативы вы можете использовать range функцию:

result = range(len(board)) 
0

Я бы просто использовать Numpy arange, который создает массив, который выглядит один, который вы ищете: Numpy Arange

import numpy as np 

enumerated = np.arange(len(board)) 
+1

Я думаю, что' numpy' или любая внешняя библиотека будут переполнены для этой проблемы. OP является новичком, поэтому, возможно, это не лучший подход в настоящее время. – Nicarus

+0

Правда, что. Начните с основ. – zauberfein

1

Использования список понимание:

indices = [index for index, y in enumerate(board)] 

Если board всегда объект, который реализует __len__ -метода, вы можете также использовать range:

indices = list(range(len(board))) 
0

Прямой путь:

board = ["O","O","O","O","O"] 
newlist = [] 
for index,y in enumerate(board): 
    newlist.append(index) 

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

newlist = [index for index, value in enumerate(board)] 
Смежные вопросы