为什么Python列表在下面的代码修改得到

问题描述 投票:0回答:1

我传递三个列表和目前使用两个列表来形成除了列表。但是,尽管这样,用于添加(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
1个回答
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()]
© www.soinside.com 2019 - 2024. All rights reserved.