我要传递三个列表,目前正在使用两个列表构成一个附加列表。但是在这样做时,用于加法的列表(在这种情况下为A和P)正在被修改。为什么会发生?
def solve(A, P, Q):
# Your Code Here
add=[A[i]+P[i] for i in range(len(list(A)))]
return add
T = int(input())
for _ in range(T):
n = int(input())
A = map(int, input().split())
P = map(int, input().split())
Q = map(int, input().split())
print(list(A)) # getting value in list
out_ = solve(A, P, Q)
print(list(A)) # not getting value in list
print(list(Q))
print (out_)
为什么我在求解功能之前在列表A中获得了价值,但在我未修改列表A之后却没有获得价值?另外,我不是在OUT_也得到任何东西。
输出:
1
3
3 4 5
1 1 1
1 2 3
[3, 4, 5]
[]
[1, 2, 3]
[]
答案 0 :(得分:3)
在Python 3中,map()
不会返回列表,而是一个“地图对象”,它是一个 iterator 。
每当调用list()
上的结果map()
,在第一次迭代全用完。第二次,它是空的。
>>> A = map(int, "123")
>>> list(A)
[1, 2, 3]
>>> list(A)
[]
如果你从来没有使用list()
除了调用之后map()
,您的代码应工作。
A = list(map(int, input().split()))
但是,这基本上是一个列表理解:
A = [int(s) for s in input().split()]