2016-10-14 2 views
-1

Это вопрос наилучшей практики кодирования. Предположим, я должен заполнить список неизвестной длины; Обычно я просто инициализирую список myList = [], но я чувствую, что это плохой способ сделать это. Я часто в конечном итоге с кусками кода, которые выглядят следующим образом:Каков самый чистый способ инициализации динамического списка в Python?

list1 = [] 
list2 = [] 
list3 = [] 

for a,b,c in zip(x,y,z): 
    list1.append(a) 
    list2.append(b) 
    list3.append(c) 

Я понимаю, что в данном примере вы можете инициализировать этот список до нужной длины, на самом деле вы можете просто использовать x,y,z как они есть. Мой вопрос касается ситуации, когда вы не обязательно знаете длину списков. На мой взгляд, использование трех строк для инициализации этих списков неудобно; что вы, ребята, вещь? Спасибо за любой вклад!

+0

Почему это плохая вещь, чтобы сделать? * Большинство * использование списков предназначено для обработки переменного количества элементов. –

+0

Вы имеете в виду, что не знаете, сколько списков передается 'zip'? – chepner

+0

Нет, я просто использовал это в качестве примера, чтобы проиллюстрировать, как для инициализации списков требуется три строки кода. Я понимаю, что списки используются для хранения переменного количества элементов. Мне было интересно, есть ли способ инициализировать их более чистым образом. – eeScott

ответ

1

Используйте список списков:

lol = [[], [], []] 
for items in zip(x, y, z): 
    for i, item in enumerate(items): 
     lol[i].append(item) 
+0

Или просто используйте 'lol = [x [:], y [:], z [:]]' .. –

+1

Дело не в том, чтобы решить конкретную проблему (как говорит eeScott в вопросе, он понимает, что может просто используйте 'x, y, z'), но чтобы показать схему работы с несколькими списками. – kindall

+0

Итак, ваше предложение - это список списков? Это интересная идея. Я предполагаю, что вы можете сделать так: a, b, c = [], [], [] '. – eeScott

2

Нет необходимости ничего умного:

list1 = list(x) 
list2 = list(y) 
list3 = list(z) 
+0

Это не то, что я спросил. – eeScott

+0

Ах. Что ты спросил? –

+0

Непонятно, что вы просите. Это делает то же самое, что и ваш текущий цикл, только более четко и более эффективно. – chepner

Смежные вопросы