Как мне создать список из 256 элементов? - PullRequest
2 голосов
/ 11 марта 2010

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

Мне нужно создать список из 256 элементов, в котором каждый элемент имеет значение math.sin(2*i*pi/256). Проблема в том, что я не знаю, как сгенерировать список, инициализированный «фиктивными» значениями, которые я затем могу использовать для цикла for для перехода и назначения значений функции sin.

Использование list () создает «пустой» список, но без элементов, поэтому я получаю в цикле ошибку «индекс назначения списка вне диапазона». Есть ли способ для этого, кроме явного создания объявления списка, содержащего 256 элементов со значением «0»?

Ответы [ 5 ]

8 голосов
/ 11 марта 2010

В двух ответах уже показано, как составить список одним махом, используя конструкцию «понимание списка» (AKA «listcomp»).

Чтобы ответить на ваш конкретный вопрос, однако,

mylist = [None] * 256

- это самый простой способ создать список из 256 элементов, все из которых None, на случай, если вы захотите заполнить его позже.

Если вы начинаете с пустого списка, вызовите его метод .append(...), чтобы добавить каждый элемент в конце. Цикл, который ничего не делает, кроме append в изначально пустом списке, обычно заменяется более сжатым списком comp.

Конечно, для поставленной задачи,

mylist = [math.sin(2 * math.pi/256)] * 256

был бы безусловно лучшим подходом - бессмысленно вычислять sin 256 раз, когда аргумент всегда один и тот же (смело предполагая, что то, что вы говорите - это то, что вы имеете в виду ; -.) * * тысяча двадцать-один

5 голосов
/ 11 марта 2010
my_list = [math.sin(2 * math.pi/256) for i in xrange(256)]
1 голос
/ 11 марта 2010

Вы также можете попробовать:

l = []
for i in range(256):
    l.append(math.sin(2*math.pi/256))

Это итерационный цикл for, который продолжает добавлять одно и то же значение в конец списка 256 раз

1 голос
/ 11 марта 2010

Мне нужно создать список из 256 элементы, в которых каждый элемент является значение math.sin (2 * math.pi / 256)

Чтобы ответить на ваш вопрос буквально:

my_list=[math.sin(2*math.pi/256)]*256
0 голосов
/ 11 марта 2010

Спасибо всем за помощь. Я сделал ошибку в спецификации, которую я разместил для вопроса, в том, что значение каждого элемента в списке должно быть грехом угла , увеличенного на 2 * pi / 256 каждый раз. Код, который работает для меня в этом случае:

li = [math.sin((2*math.pi/256)*i) for i in xrange(0,256)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...