我知道这是一个很愚蠢的问题,已经回答了类似的问题,但是它们不太合适,所以... 在“保持”各个变量的同时,如何在多个变量上执行相同的操作? 例如:
a = 3
b = 4
c = 5
a,b,c *= 2 #(obviously this does not work)
print(a,b,c)
在这种情况下,我想要的输出是6、8、10。我仍然可以使用更改的变量非常重要。
非常感谢您的回答!
答案 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返回一个生成器,这就是为什么我们需要显式创建要解压缩的列表的原因。