Python-操纵列表以创建另一个列表

Python-操纵列表以创建另一个列表,python,list,Python,List,我有很多相同长度的列表,比如说4个,但这可能会改变。我要做的是合并这些列表,以便合并每个列表的第一项,即项[0],以形成一个新列表。与第[1]项、第[2]项等类似,这似乎很简单,但如何确保从第一个列表(列表1)动态创建列表名称(即slide1) i、 e.我想从这开始: list1 = ['slide1','slide2','slide3','slide4'] list2 = [1,2,3,4] list3 = ['banana', 'apple', 'pear', 'orange'] 为此:

我有很多相同长度的列表,比如说4个,但这可能会改变。我要做的是合并这些列表,以便合并每个列表的第一项,即项[0],以形成一个新列表。与第[1]项、第[2]项等类似,这似乎很简单,但如何确保从第一个列表(列表1)动态创建列表名称(即slide1)

i、 e.我想从这开始:

list1 = ['slide1','slide2','slide3','slide4']
list2 = [1,2,3,4]
list3 = ['banana', 'apple', 'pear', 'orange']
为此:

slide1 = ['slide1',1,'banana']
slide2 = ['slide2',2,'apple']
slide3 = ['slide3',3,'pear']
slide4 = ['slide4',4,'orange']
我需要这样做的原因是随后将这些列表输入数据库。有什么线索吗?我想我知道如何做for循环,但我一直在创建“动态”列表名。我应该用字典吗

提前感谢您的帮助

非常简单:

lst = zip(list1, list2, list3)

print(lst[0])
>>> ('slide1', 1, 'banana')

# in case you need a list, not a tuple
slide1 = list(lst[0])

您不希望动态创建变量名

事实上,您首先不应该拥有
list1、list2、list3
,而是一个名为
lists
的单一列表:

>>> lists = [['slide1','slide2','slide3','slide4'], [1,2,3,4], ['banana', 'apple', 'pear', 'orange']]
>>> slides = [list(slide) for slide in zip(*lists)]
>>> slides
[['slide1', 1, 'banana'], ['slide2', 2, 'apple'], ['slide3', 3, 'pear'], ['slide4', 4, 'orange']]

现在,使用
列表[0]
,而不是
列表1
,使用
幻灯片[0]
,而不是
幻灯片1
。这更干净、更易于维护,并且可以扩展。

使用itertools。如果列表非常大,您只需反复浏览新幻灯片,izip将更有效

import itertools
for x in itertools.izip(list1, list2, list3):
    print x

一个直接的答案是,您似乎想要一个带有list1元素的
dict
,它可以通过以下方式实现:

dict( zip(list1, list(zip(list2, list3))) )

但是,Tim说您应该检查数据结构是正确的…

您甚至可以使用替换for循环。