首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在多个变量上减去一个?python

如何在多个变量上减去一个?python
EN

Stack Overflow用户
提问于 2013-09-24 20:27:23
回答 4查看 2.4K关注 0票数 1

我有来自两个不同对象的两组相同的int变量,但其中一个以0开头,另一个以1开头。

代码语言:javascript
复制
a = 0, b = 5, c = 7 # var_abc
x = 1, y = 6, d = 6 # var_xyz

为了执行其他进程,我必须将var_xyz转换成var_xyz == var_abc,所以我必须为var_xyz中的每个变量编写这行代码:

代码语言:javascript
复制
x,y,z = x-1, y-1, z-1

如果我们只是在var_xyz中实例化变量,我们可以这样做:

代码语言:javascript
复制
x,y,z = (0,)*3

还有另一种方法吗?对于var_xyz中的每个变量,我不需要硬编码var-1吗?想象一下,如果var_xyz中有大约1000个变量。

EN

Stack Overflow用户

回答已采纳

发布于 2013-09-24 20:33:21

您已经注意到,对于1000个变量的情况,复制将是一个麻烦,这是很好的。这意味着您需要提升一个抽象级别,这样您就可以得到一个列表或一个字典,而不是1000个变量,然后循环起来。

例如,如果从0开始对变量进行计数是有意义的,您可以使用一个列表:

代码语言:javascript
复制
>>> vv = [10,20,30,40,50]
>>> vv[3]
40

然后使用列表理解来进行减法:

代码语言:javascript
复制
>>> vv = [v-1 for v in vv]
>>> vv
[9, 19, 29, 39, 49]
>>> vv[3]
39

或者,如果变量具有名称很重要,则可以使用字典:

代码语言:javascript
复制
>>> # first, let's make a test dictionary
>>> from string import ascii_lowercase
>>> d = {k: i for i, k in enumerate(ascii_lowercase[:10])}
>>> d
{'a': 0, 'c': 2, 'b': 1, 'e': 4, 'd': 3, 'g': 6, 'f': 5, 'i': 8, 'h': 7, 'j': 9}
>>> d['d']
3

并使用字典理解来简化减法:

代码语言:javascript
复制
>>> d = {k: v-1 for k,v in d.iteritems()}
>>> d['d']
2
票数 3
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18991398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档