如何用新的数字替换列表的每个元素,新的数字等于其自身与我使用函数提供的数字的乘积。我正在通过定义新列表D
来实现预期的目标。
D=[]
S= [1,2,3,4]
def num(x):
for i in S:
D.append(i*x)
return D
num(2)
在上面的示例中,D
的输出为[2, 4, 6, 8]
,而S
保持不变。我希望将S
更改为[2, 4, 6, 8]
答案 0 :(得分:0)
您可以按如下方法覆盖现有值,而不是将值附加到新列表中:
S = [1,2,3,4]
def num(x):
for i in range(0, len(S)):
s[i] *= x
答案 1 :(得分:0)
您有很多选择可以做到这一点。您可以直接操纵S或重新分配它:
n->child[29]=new avail;
一个更合理的版本:
def num(x):
global S
for index, value in enumerate(S):
S[index] = value * x
def num(x)
inner = []
for i in S:
inner.append(i*x)
return inner
S = num(2)
现在很重要的部分,为什么这很理智?好吧,因为python中的列表不是一成不变的,所以您必须小心如何进行更改。就您而言,制作依赖于函数外部变量值的函数是有风险的。如果您总是想要第一个列表,并且在一个函数中对其进行更改(变异),则会遇到很多问题。如果您确实想更改原始列表,那很好,但是仍然可以通过列表理解(列出的最后一个选项)实现相同的目的。
答案 2 :(得分:0)
您可能还应该将列表放入函数中。然后更改其元素,并(可选)将其返回给ast:
S = [i*2 for i in S]
输出:
def num(data,multi):
"""Multiplies each element of data (a list of ints) by multi.
The original list is modified and returned as well for chaining."""
# data[:] = [d*multi for d in data] # inplace reassignment list comp
# or
for i,d in enumerate(data[:]): # this iterates a _copy_ of data, do not modify a list
data[i]=d*multi # that you currently iterate over - it is possible here
# but often it is a bad idea if you add/remove things
return data
S= [1,2,3,4]
num(S,2)
print(S)
SO上有几个骗子:
其中一些用于python2,其中[2,4,6,8]
仍返回map
-您可以查找它们以获取更多选项。
还返回函数内的列表,将允许您链接调用:
list