Python编织列表

Pie*_*ter 1 python function

我想把两个编号"编织"在一起.

例:

x = [1,2,3]
y = [4,5,6]

result = [1,4,2,5,3,6]
Run Code Online (Sandbox Code Playgroud)

这是我的功能,我无法找出它为什么不起作用:

def weave(list1,list2):
    lijst = []
    i = 0
    for i <= len(list1):
        lijst += [list1[i]] 
        lijst += [list2[i]] 
        i + 1
Run Code Online (Sandbox Code Playgroud)

Mat*_*att 10

您可以使用模块中的chain函数itertools来交错两个列表:

x = [1,2,3]
y = [4,5,6]

from itertools import chain
list(chain.from_iterable(zip(x, y)))
# [1, 4, 2, 5, 3, 6]
Run Code Online (Sandbox Code Playgroud)


Ter*_*ryA 5

Python 的 for 循环不像其他语言那样可以有条件。您需要使用while循环或更改 for 循环:

def weave(list1,list2):
    lijst = []
    i = 0
    while i < len(list1):
        lijst.append(list1[i])
        lijst.append(list2[i]) 
        i += 1
    return lijst
Run Code Online (Sandbox Code Playgroud)

我以多种方式更改了您的代码:

  • 如果您有想要循环的条件,请使用 while 循环
  • 您希望条件小于长度,而不是小于或等于。这是因为索引从 0 开始,如果您这样做<=,那么它将尝试执行list1[3]越界的操作。
  • 用于list.append将项目添加到列表中
  • 你忘了=i += 1
  • 最后,不要忘记返回列表!

您还可以使用zip()

>>> [a for b in zip(x, y) for a in b]
[1, 4, 2, 5, 3, 6]
Run Code Online (Sandbox Code Playgroud)