【问题标题】:How does placing an empty list on the left-hand side of an unpack assignment work? [duplicate]在解包作业的左侧放置一个空列表如何工作? [复制]
【发布时间】:2017-06-20 00:16:14
【问题描述】:

this PyCon talk 中途,演讲者输入了一段非常不寻常的代码:

can_recv, can_send, [] = select(recv_wait, send_wait, [])

一切进展顺利,但最后,当一位观众问他为什么在解包作业的左侧放置一个空列表文字时,他都感到惊讶。 “是我做的吗?”当他找到它时,他说他打算使用_,表示一个一次性变量,而且他似乎根本不知道为什么这会起作用。

谁能解释这里发生了什么,如何顺利运行而不是因运行时错误而崩溃?

【问题讨论】:

    标签: python


    【解决方案1】:

    只要列表长度匹配,您就可以解压到列表中。例如:

    can_recv, can_send, [a, b] = 1, 2, [3, 4]
    

    将分配 a=3 和 b=4。

    该讲座中的案例是空列表的退化案例。顺便说一句,您也可以使用右侧的空元组或空字典来执行此操作。

    【讨论】:

    • 不错。 [] = [][a, b] = [1, 2] 一样有效。只是一个常规的解包。
    猜你喜欢
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多