如何在Python中连接两个列表?
我想这样:如何在Python中连接两个列表?,python,list,Python,List,我想这样: to_do_list = ["studying", "coding"] Times = [3, 4] #per hour 连接是指将一个列表添加到另一个列表的末尾: ["studying", 3, "coding", 4] [1,3,2,4] 但你不想这样;你想让他们交替!zip函数是一种很好的方法: >>> to_do_list + Times ['studying', 'coding', 3, 4] Python中有两个字典,它们相互匹配: 这是您正在
to_do_list = ["studying", "coding"]
Times = [3, 4] #per hour
连接是指将一个列表添加到另一个列表的末尾:
["studying", 3, "coding", 4]
[1,3,2,4]
但你不想这样;你想让他们交替!zip
函数是一种很好的方法:
>>> to_do_list + Times
['studying', 'coding', 3, 4]
Python中有两个字典,它们相互匹配: 这是您正在寻找的,还是您正在尝试将这两个列表自动组合 本词典={ “品牌”:“福特”, “模型”:“野马”, “年份”:1964年 } 打印(thisdict)签出,它共享以下内容
>>> [t for t in zip(to_do_list, Times)]
[('studying', 3), ('coding', 4)]
>>> [i for t in zip(to_do_list, Times) for i in t]
['studying', 3, 'coding', 4]
对于您的程序,您可以执行以下操作:
# initializing lists
test_list1 = [1, 4, 5]
test_list2 = [3, 8, 9]
# printing original lists
print ("Original list 1 : " + str(test_list1))
print ("Original list 2 : " + str(test_list2))
# using list slicing
# to interleave lists
res = test_list1 + test_list2
res[::2] = test_list1
res[1::2] = test_list2
# printing result
print ("The interleaved list is : " + str(res))
最快的解决方案可能是使用zip:
>>> to_do_list = ["studying", "coding"]
>>> times=[3,4]
>>> res = to_do_list + times #combine lists
>>> res[::2] = to_do_list #every other element starting at 0
>>> res[1::2] = times #every other element starting at 1
>>> print(res)
['studying', 3, 'coding', 4]
或一些列表理解:
list1 = [1,2]
list2 = [3,4]
list(zip(list1,list2))
输出:
[sub_list[i] for i in range(len(list2)) for sub_list in [list1, list2]]
对于其他解决方案:连接是指将一个列表添加到另一个列表的末尾:
["studying", 3, "coding", 4]
[1,3,2,4]
但你不想这样;你想让他们交替!zip
函数是一种很好的方法。当您zip
将两个列表压缩在一起时,您会得到一个元组表,将列表“压缩”在一起:
>>> to_do_list + Times
['studying', 'coding', 3, 4]
要从这些元组中取出元素并将它们放入一个列表中,请添加另一个理解(即对从zip
中得到的每个t
执行类似于for i in t
的操作):
有多种方法可以做到这一点 如果您想做的任务是“将每个列表中的元素交替放置到一个列表中”,那么最直观的方法就是使用for循环 假设两个列表长度相同
list_1=[1,2,3,4,5]
列表2=['a','b','c','d','e']
列表输出=[]
对于范围内的i(len(列表_1)):
list_out.append(list_1[i])
list_out.append(list_2[i])
或者,如果您想做得更简单,请尝试以下操作:
list\u out=sum([[a,b]表示a,b在zip中(list\u 1,list\u 2)],[]
(实际上,上面的代码可以分为两行:
zip=[[a,b]对于zip中的a,b(列表1,列表2)]#使用列表理解和zip函数
#压缩=[[1,'a'],[2,'b'],[3,'c'],[4,'d'],[5,'e']]
list_out=sum(压缩,[])#在“压缩”中连接所有列表元素
您好,到目前为止您自己尝试了什么?似乎您想要交错,而不仅仅是串联。我担心这是一个XY问题,这个答案实际上是正确的。OP:您想要一个数据的平面列表,还是要将这些值(3
和4
)分配给这些键(学习
和编码
)这不是一个真正的答案,但我认为你的思路是对的。试着教OP如何将列表键
和列表值
转换成组合字典
这比列表(zip(列表1,列表2))要好
?与我的实际情况几乎相同,它导致嵌套列表组件的性能降低50%。zip的401纳秒/循环
和列表组件的681纳秒/循环