Добавить несколько переменных в список в Python

Я хочу добавить несколько переменных в список. Число переменных меняется. Все переменные начинаются с «volume». Я думал, может быть, подстановочный знак, или что-то сделало бы это. Но я не мог найти ничего подобного. Есть идеи, как это решить? Обратите внимание, что в этом примере это три переменные, но также может быть пять или шесть или что-то еще.

volumeA = 100 volumeB = 20 volumeC = 10 vol = [] vol.append(volume*) 

4 Solutions collect form web for “Добавить несколько переменных в список в Python”

Вы можете использовать extend для добавления любого итерабельного в список:

 vol.extend((volumeA, volumeB, volumeC)) 

В зависимости от префикса имен переменных у меня плохой запах кода, но вы можете это сделать. (Порядок добавления значений не определен.)

 vol.extend(value for name, value in locals().items() if name.startswith('volume')) 

Если порядок важен (ИМХО, все еще плохо пахнет):

 vol.extend(value for name, value in sorted(locals().items(), key=lambda item: item[0]) if name.startswith('volume')) 

Хотя вы можете сделать

 vol = [] vol += [val for name, val in globals().items() if name.startswith('volume')] # replace globals() with locals() if this is in a function 

гораздо лучшим подходом было бы использование словаря вместо одноименных переменных:

 volume = { 'A': 100, 'B': 20, 'C': 10 } vol = [] vol += volume.values() 

Обратите внимание, что в последнем случае порядок элементов не [100,10,20] , то есть вы можете получить [100,10,20] или [10,20,100] . Чтобы добавить элементы в порядке ключей, используйте:

 vol += [volume[key] for key in sorted(volume)] 

EDIT удалил filter из понимания списка, поскольку было подчеркнуто, что это была ужасная идея.

Я изменил его, поэтому он не слишком похож на все остальные ответы.

 volumeA = 100 volumeB = 20 volumeC = 10 lst = map(lambda x : x[1], filter(lambda x : x[0].startswith('volume'), globals().items())) print lst 

Вывод

 [100, 10, 20] 

вы хотите добавить имена переменных, а также их значения?

 output=[] output.append([(k,v) for k,v in globals().items() if k.startswith('volume')]) 

или просто значения:

 output.append([v for k,v in globals().items() if k.startswith('volume')]) 
  • Получить только уникальные элементы из двух списков python
  • Итеративный поиск / замена из списка кортежей в Python
  • Как спрятать hetrogenous список списка в один список в python?
  • Две переменные с одним и тем же списком имеют разные идентификаторы ... почему?
  • Как извлечь n-ые элементы из списка кортежей в python?
  • Удалить элемент из списка в Python, итерации по нему
  • Разделить список пополам четными и нечетными элементами?
  • Домашнее задание Python - создание нового списка
  • Python - лучший язык программирования в мире.