我是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是用于列表(例如12 ...)或列表([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中的每个列表元素。但是,在此函数的特定调用中,由于您将列表作为元素传递,因此该语句变得多余。

09-30 00:29