按顺序连接两个列表

时间:2021-06-01 11:24:12

标签: python list loops for-loop while-loop

假设我有:

odd = [1,3,5,7,9]
even = [2,4,6,8,10]

我想要一个输出列表:

temp = [1,2,3,4,5,6,7,8,9,10]

python 中获得此输出的方法应该是什么:“temp”在奇数和偶数列表的帮助下

另请注意,列表的长度可能不同。 这是两个实际列表:

low = ['Low: 53 °F', 'Low: 52 °F', 'Low: 53 °F', 'Low: 54 °F', 'Low: 52 °F']
high = ['High: 65 °F', 'High: 64 °F', 'High: 66 °F', 'High: 66 °F']

我想显示为:

temp =['Low: 53 °F',
 'High: 65 °F',
 'Low: 52 °F',
 'High: 64 °F',
 'Low: 53 °F',
 'High: 66 °F',
 'Low: 54 °F',
 'High: 66 °F',                                                                                                                         
 'Low': 52 °F' ]

6 个答案:

答案 0 :(得分:3)

您可以使用 zip 并将它们链接起来(也适用于不同长度的列表):

from itertools import chain

odd = [1,3,5,7,9,1]
even = [2,4,6,8,10,4,5,6,7]

zipped = list(chain.from_iterable(zip(odd, even)))
od = len(odd)
ev = len(even)
if od == ev:
    print(zipped)
elif od > ev:
    print(zipped + odd[ev-od:])
else:
    print(zipped + even[od-ev:])

答案 1 :(得分:2)

您可以将它们与 zip 和嵌套的 comprehension 交错:

temp = [x for pair in zip(odd, even) for x in pair]

还有一个工具——itertools.chain——来实现扁平化:

from itertools import chain

temp = [*chain(*zip(odd, even))]

答案 2 :(得分:0)

如果您希望将所有项目按顺序排列,我建议您看一下这种单行:

odd = [1,3,5,7,9,11]
even = [2,4,6,8,10]

temp = sorted([*odd, *even])
# temp = [1,2,3,4,5,6,7,8,9,10,11]

它所做的是将两个列表解包到新列表中并对其进行排序。

注意,使用这种方法,您可以处理多个初始列表:

odd = [1,3,5,7]
even = [2,4,6,8]
mixed = [23, 111, 71]

temp = sorted([*odd, *even, *mixed])
# temp = [1,2,3,4,5,6,7,8,23,71,111]

否则,我建议您使用以下(详细说明)功能。

def func(od, ev):
    ret = []
    for a, b in zip(od,ev):
        ret.append(a)
        ret.append(b)
    return ret

答案 3 :(得分:0)

这是我发现的作品。它使用函数 .sort() 并创建一个新列表。这是代码,我希望这一切都有意义:

odd = [1,3,5,7,9]
even = [2,4,6,8,10]
new = odd + even

新列表输出

[1, 3, 5, 7, 9, 2, 4, 6, 8, 10]

排序新列表

new.sort()

新的排序列表输出

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

答案 4 :(得分:0)

奇数 = [1,3,5,7,9]

偶数 = [2,4,6,8,10]

temp=奇数 + 偶数

temp.sort()

打印(温度)

答案 5 :(得分:0)

    odd = [1,3,5,7,9] 
    even = [2,4,6,8,10]

    temp = odd + even
    temp.sort()
    print(temp)