python-对多个变量应用运算

时间:2019-03-20 14:09:42

标签: python python-3.x

我知道这是一个很愚蠢的问题,已经回答了类似的问题,但是它们不太合适,所以... 在“保持”各个变量的同时,如何在多个变量上执行相同的操作? 例如:

a = 3
b = 4
c = 5
a,b,c *= 2  #(obviously this does not work)
print(a,b,c) 

在这种情况下,我想要的输出是6、8、10。我仍然可以使用更改的变量非常重要。

非常感谢您的回答!

6 个答案:

答案 0 :(得分:0)

您可能需要研究Python的map函数。以下链接可能会有所帮助:https://www.w3schools.com/python/ref_func_map.asp

答案 1 :(得分:0)

地图是您的朋友,但您还需要使用“隐式元组拆包”:

>>> a = 3
>>> b = 4
>>> c = 5
>>> d, e, f = map(lambda x: x * 2, [a, b, c])
>>> d
6
>>> e
8
>>> f
10

这样,您无需修改​​原始值即可找回更改的值

答案 2 :(得分:0)

您可以将numpy或python lambda函数与map结合使用来进行相同的操作。

使用numpy:

In [17]: import numpy as np

In [18]: a = 3
    ...: b = 4
    ...: c = 5
    ...:

In [19]: a,b,c = np.multiply([a, b, c], 2)

In [20]: a
Out[20]: 6

In [21]: b
Out[21]: 8

In [22]: c
Out[22]: 10

使用lambda:

In [23]: a, b, c = list(map(lambda x: x*2, [a, b, c]))

In [24]: a
Out[24]: 12

In [25]: b
Out[25]: 16

In [26]: c
Out[26]: 20

答案 3 :(得分:0)

您可以将它们存储在容器中,然后使用map在容器的每个元素上应用一个功能
例如带有列表:

def function_to_apply(element):
    return element*2

# Define variables and store them in a container
a,b,c = 1,2,3
container = (a,b,c)

# Apply the function on every element with map
container = tuple(map(function_to_apply, container))
a,b,c = container


也可以使用 lambda函数完成此操作,以避免每次都定义新函数

# Define variables and store them in a container
a,b,c = 1,2,3
container = (a,b,c)

# Apply the function on every element with map
container = tuple(map(lambda x: x*2, container))
a,b,c = container

如果您有大量的变量,并且想要自动检索它们而不必像在a,b,c = container中那样键入每个变量,则可以使用 dict 来存储它们名称或 exec 函数来动态分配它们。

map文档:https://docs.python.org/3/library/functions.html#map
lambda文档:https://docs.python.org/3/reference/expressions.html#grammar-token-lambda-expr

答案 4 :(得分:0)

您可以使用以下生成器表达式:

    public enum danger {

        Danger("DGR"), Normal("NOR");

        private danger(String value) {
            this.value = value;
        }

        /**
         * The value.
         */
        private final String value;

        /**
         * @return the value
         */
        public String getValue() {
            return value;
        }
    }

List<String> dangerlist = Stream.of(danger.values())
                                .map(x -> x.getValue())
                                .collect(Collectors.toList());

答案 5 :(得分:0)

您可以使用map来使用lambda函数将函数应用于列表的每个元素,以执行操作。然后使用列表解压缩覆盖原始变量中的值。

a = 1
b = 2
c = 3

a,b,c = list(map(lambda x: x*2, [a,b,c]))

print(a,b,c)

# prints: (2, 4, 6)

map返回一个生成器,这就是为什么我们需要显式创建要解压缩的列表的原因。