dou*_*oug 13 python variable-assignment
多个解包分配的教科书示例如下:
import numpy as NP
M = NP.arange(5)
a, b, c, d, e = M
# so of course, a = 0, b = 1, etc.
M = NP.arange(20).reshape(5, 4) # numpy 5x4 array
a, b, c, d, e = M
# here, a = M[0,:], b = M[1,:], etc. (ie, a single row of M is assigned each to a through e)
Run Code Online (Sandbox Code Playgroud)
(我的问题不numpy具体.事实上,我更喜欢纯Python解决方案.)
对于我现在正在看的那段代码,我看到了这个直接场景的两个复杂问题:
我通常不会知道M的形状; 和
我想解压一定数量的物品(绝对比所有项目更少),我想把其余为单一 容器
回到上面的5x4数组,我非常想做的是分别将前三行M分配给a,b和c(完全如上),其余行(我不知道如何)很多东西,只有一些正整数)到一个容器,all_the_rest = [].
Ign*_*ams 29
Python 3.x可以轻松完成此任务:
a, b, *c = someseq
Run Code Online (Sandbox Code Playgroud)
Python 2.x需要更多的工作:
(a, b), c = someseq[:2], someseq[2:]
Run Code Online (Sandbox Code Playgroud)
Mik*_*ham 11
Python的语法添加到Python 3中
>>> # Python 3.x only
>>> a, b, *c = range(10)
>>> a
0
>>> b
1
>>> c
[2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
但是Python 2中没有类似的解决方案.
你当然可以
>>> s = range(10)
>>> s
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> (a, b, c), rest = s[0:3], s[3:]
>>> a
0
>>> b
1
>>> c
2
>>> rest
[3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
或其他类似的解决方案
| 归档时间: |
|
| 查看次数: |
10444 次 |
| 最近记录: |