Python 使用For循环实现Zip(*iterables)

Python 使用For循环实现Zip(*iterables),python,zip,Python,Zip,我试图使用for循环实现zip(*iterables)函数,但我无法实现。正如您所知,zip函数获取传递到其中的每个列表的第一个元素,将其放入元组中,然后对列表中的第二个元素列表执行相同的操作。。。等等在我的例子中,我只能使用第一个元素 就我所知: def inputlist(input_list): returned_list = [] for i in input_list: for j in range(len(i)): return

我试图使用for循环实现
zip(*iterables)
函数,但我无法实现。正如您所知,zip函数获取传递到其中的每个列表的第一个元素,将其放入元组中,然后对列表中的第二个元素列表执行相同的操作。。。等等在我的例子中,我只能使用第一个元素

就我所知:

def inputlist(input_list):
    returned_list = []
    for i in input_list:
        for j in range(len(i)):
            returned_list.append(i[j])
            break

    return returned_list
仅供参考:这纯粹是为了学术目的,我们这样做只是为了好玩


举个例子,下面是我要传递的列表:[[2,3,4],[5,6,7],[8,9,10]

我不太确定您到底想如何压缩列表。所以您有一个列表,并且希望始终压缩该列表中的两个连续项? 因为您的函数只接受一个列表作为输入

通常,要组合两个列表,可以尝试以下操作:

def listzip(list1, list2):
    return zip(list1,list2)

这将构造一个zip对象,其中包含来自原始两个列表的压缩对。

这里是一个zip实现,不包含
zip()

为了简单起见,我没有处理当元素的数量不在同一长度时拉链被拉出的情况。 原始代码中的缺陷是实际上取消了其中一个循环的
中断
,以及应该在外部元素“j”后面附加内部值的事实

lst = [[1,2,3],[4,5,6]]

def inputlist(lst):
    inner_len = len(lst[0]) #in szip it isactually the minimum length of all the items
    returned_list = [[] for _ in range(inner_len)]
    for i in lst:
        for j in range(len(i)):
            returned_list[j].append(i[j])

    return returned_list

print(inputlist(lst))  # --> [[1, 4], [2, 5], [3, 6]]

不要将
列表
作为变量名。其次,什么是len(i)?对不起。我改了
len(i)
现在有意义了。我道歉。我已经更新了我输入的内容。仅供参考,这是一个这样的列表:
[[2,3,4],[5,6,7],[8,9,10]
好的,谢谢。所以你有一个列表。现在你想压缩所有的第一个元素,第二个元素等等?是的,没错,但我可能已经从下面找到了答案。谢谢你看。我想这就是我要找的。一旦我理解了,我会记下的。