cod*_*ler 14 python list assign
我很想知道是否有一种"pythonic"方式将列表中的值分配给元素?为了更清楚,我要求这样的事情:
myList = [3, 5, 7, 2]
a, b, c, d = something(myList)
Run Code Online (Sandbox Code Playgroud)
以便:
a = 3
b = 5
c = 7
d = 2
Run Code Online (Sandbox Code Playgroud)
我正在寻找任何其他更好的选择,而不是手动执行此操作:
a = myList[0]
b = myList[1]
c = myList[2]
d = myList[3]
Run Code Online (Sandbox Code Playgroud)
NDe*_*vox 22
只需输入:
>>> a,b,c,d = [1,2,3,4]
>>> a
1
>>> b
2
>>> c
3
>>> d
4
Run Code Online (Sandbox Code Playgroud)
assignment unpacking当您iterable将多个变量分配给上面时,Python会使用Python .
在Python3.x这已被扩展,因为您还可以解包大量小于iterable使用星号运算符的长度的变量:
>>> a,b,*c = [1,2,3,4]
>>> a
1
>>> b
2
>>> c
[3, 4]
Run Code Online (Sandbox Code Playgroud)
完全同意 NDevox 的回答
a,b,c,d = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
我认为还值得一提的是,如果您只需要列表的一部分,例如只需要列表中的第二个和最后一个元素,您可以这样做
_, a, _, b = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
a, b, c, d = myList
就是你想要的。
基本上,该函数返回一个元组,它类似于列表 - 因为它是一个可迭代的。
顺便说一句,这适用于所有可迭代对象。并且在使用的时候需要知道iterable的长度。
小智 5
一个技巧是在 Python 3.8 中使用 walrus 运算符,这样您仍然拥有 my_list 变量。并使其成为一条线操作。
>>> my_list = [a:=3, b:=5, c:=7, d:=2]
>>> a
3
>>> b
5
>>> c
7
>>> d
2
>>> my_list
[3, 5, 7, 2]
Run Code Online (Sandbox Code Playgroud)
PS:使用camelCase(myList)也不是Pythonic。
Python 3.8 的新增功能:https://docs.python.org/3/whatsnew/3.8.html
| 归档时间: |
|
| 查看次数: |
11141 次 |
| 最近记录: |