我是Python和编程的新手。有人可以详细解释以下代码吗?
def myzip(*seqs):
seqs = [list(S) for S in seqs]
res = []
while all(seqs):
res.append(tuple(S.pop(0) for S in seqs))
return res
>>> myzip([1, 2, 3], ['a', 'b', 'c'])
[(1, 'a'), (2, 'b'), (3, 'c')]
特别是,我不理解
S
是用于列表(例如1
,2
...)或列表([1, 2, 3]
)中的元素的。我想我需要为每行提供详细的说明。
最佳答案
seqs是两个单独的列表的列表:[1,2,3]和['a','b','c']
现在,while all(seqs):
将遍历seqs的元素-上面提到的两个列表。
然后,我们创建一个空列表res,并将其附加到tuple
对象。
每个元组对象将按顺序依次包含每个列表的第一个元素。 pop(0)
将返回第一个元素并将其从列表中删除,从而更改列表的位置(列表是可变的)。
因此,您要做的就是创建一个元组列表,该列表通过将两个列表中的相应元素配对而获得。
当您说seqs = [list(S) for S in seqs]
时,S指的是seqs中的每个列表元素。但是,在此函数的特定调用中,由于您将列表作为元素传递,因此该语句变得多余。