我传递三个列表和目前使用两个列表来形成除了列表。但是,尽管这样,用于添加(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_)
为什么会出现在列表中的值之前解决的功能,但并不是虽然之后我没有修改列表一个。另外,我不是在OUT_得到任何东西也。
输出:
1
3
3 4 5
1 1 1
1 2 3
[3, 4, 5]
[]
[1, 2, 3]
[]
在Python 3,map()
不返回一个列表,而是一个“地图对象”,这是一个迭代器。
每当你调用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()]