封闭范围内赋值之前引用的变量p

时间:2019-05-06 12:59:27

标签: python python-3.x list list-comprehension

我正在尝试解决以前已经解决但现在使用列表推导的问题。问题很简单,我有一个列表,我想使用列表理解将其反转

定义第一个列表很容易,但是当我添加倒排的列表时,会给我标题中的错误。我知道我们不应该在列表推导中添加内容,但是我不知道要输入什么。

v=[]
p=[]

def listt():
    v=[int(input('Digit element\n'))for j in range(0,int(input('Digit number of elements')))]
    return v
print(listt())

def invert_list(v):
    p=[p.append(v[j]) for j in range(len(v),-1,-1)]
    return p
print(invert_list(v))

3 个答案:

答案 0 :(得分:3)

尝试使用此方法代替p=[p.append(v[j]) for j in range(len(v),-1,-1)]

p=[v[j] for j in range(len(v),-1,-1)]

答案 1 :(得分:1)

做事时-

p=[p.append(v[j]) for j in range(len(v),-1,-1)]

p不存在,因此错误。

您可以执行以下操作-

def invert_list(v):
    p = []
    for j in range(len(v)-1,-1,-1):
         p.append(v[j])
    return p

答案 2 :(得分:1)

p是局部变量;您不能在它存在之前对其进行追加。

尚不清楚为什么要使用全局变量pv(请注意,listt不会修改全局v)。

def listt():
     return [int(input('Digit element\n'))for j in range(0,int(input('Digit number of elements')))]

def invert_list(v):
    return [v[j] for j in range(len(v)-1,-1,-1)]

x = listt()
print(x)
print(invert_list(x))