Python:多个参数如何工作?

标签 python function arguments

我是 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])。

我想我需要对每一行进行详细解释。

最佳答案

在列表理解中,S分配传递给函数的每个参数; seqs是传入的参数列表,并且您传入了两个列表。所以S首先绑定(bind)到[1, 2, 3]然后['a', 'b', 'c'] .

>>> seqs = [[1, 2, 3], ['a', 'b', 'c']]
>>> seqs[0]
[1, 2, 3]

第一行只是确保所有参数都显式地转换为列表,以便您稍后可以调用 list.pop(0)在各个。这允许您传入字符串、元组、字典或任何其他可迭代对象作为此函数的参数:

>>> myzip('123', 'abc')
[('1', 'a'), ('2', 'b'), ('3', 'c')]

while all(seqs):然后循环迭代,直到至少有一个参数为空。换句话说,当最短序列用完时循环终止:

>>> myzip('1', 'abc')
[('1', 'a')]

在循环中,每个输入参数的第一个元素将从列表中删除并添加到 res作为一个元组。对于 2 个输入列表,这意味着第一个 (1, 'a')添加到res ,然后是 (2, 'b')然后(3, 'c') .

关于Python:多个参数如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21233132/

相关文章:

python - YouTube API 返回带有空列表的 nextPageToken

Python:使用 wget 调用子进程 - 缺少方案

c - 如何在 C 中定义指向函数的指针并将该指针分配给函数?

JavaScript 函数难度

c++ - 将 byte[] 数组作为方法的多个参数传递

python - 以 IP 地址作为参数的函数调用

javascript - javascript 中的函数...帮我连接点

python - Pyvenv无法创建虚拟环境

python - 我可以在没有 getch() 函数的情况下在 ncurses 屏幕上显示字符串吗?

python - sum 函数不是通用的。那么哪个是?