Python 使用For循环实现Zip(*iterables)
我试图使用for循环实现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
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]
好的,谢谢。所以你有一个列表。现在你想压缩所有的第一个元素,第二个元素等等?是的,没错,但我可能已经从下面找到了答案。谢谢你看。我想这就是我要找的。一旦我理解了,我会记下的。