众所周知,我们可以在Python中通过下标如lst[1]来对列表进行解包,或者用*lst进行解包,但是如果你遇到下面的问题该如何解决呢?
有如下列表,我们要获取列表中的前二个元素和最后一个元素,组成一个新的列表。
inputs = ["John", "Smith", "United States", "Blue", "Brown", "29"]
这是一个包含6个元素的列表inputs, 我们可以通过批量赋值的方法来得到需要的三个元素,只用一行代码就足够了。我们用first, second, third分别代表1,2, 3个元素。通过以下方式赋值。
first, second, *_, third = inputs
new_list = [first, second, third] #组成新的列表
上面这一行代码使用了扩展解包(extended unpacking)的语法。
下面,我们对其进行一一解释:
first:将获取列表中的第一个元素,即"John"。
second:将获取列表中的第二个元素,即"Smith"。
【* _】:这是扩展解包语法,它表示将剩余的元素作为一个列表赋值给【_】(下划线)。此例中,"_ "并不是一个特定的变量名,而只是一个占位符,表示我们不关心剩余的中间元素。
这可以确保在扩展解包时,前两个元素被分配给first和second,而剩余的元素被收集到一个列表中。
所以,无论inputs中有多少个元素,first和second都会获取到前两个元素的值,而_*中的下划线部分将获取所有中间元素,不管有多少个。
最后,third将获取列表中的最后一个元素,即"29"。
这种方法方便地将一个列表拆分成多个变量,同时可以忽略中间不关心的元素。