无法迭代python中的列表

时间:2017-09-23 19:41:35

标签: python list

您好我无法将由“space”分隔的字符串转换为for循环的列表。 显示运行时错误:AttributeError:'NoneType'对象没有属性'sorted'

#The code is to get the second highest number

n = int(input())
arr = map(int, input().split())   # this is a string
arr_list = []
for i in range(n):
    arr_list = arr_list.append(arr)
    arr_list = arr_list.sorted()
    arr_set = set(arr_list)
    if len(arr_list) > 1:
        print(list(arr_set)[-2])
    else:
        print(arr_list[0])

2 个答案:

答案 0 :(得分:0)

arr_list.append(arr)arr追加到arr_list并返回None,因此:

arr_list = arr_list.append(arr) ==> arr_list = None

arr_list.sorted() => None.sorted() ==> AttributeError: 'NoneType' object has no attribute 'sorted'

此外,要使用sorted对列表进行排序,请使用sorted(list)代替list.sorted()

要将字符串转换为列表,您应该执行以下操作:

arr = list(map(int, input().split())) # this is a list

答案 1 :(得分:0)

你有很多错误,但可以简化为:

arr = sorted(set(map(int, input('Enter space-separated numbers: ').split())))
if len(arr) > 1:
    print(arr[-2])
else:
    print(arr[0])

map()返回一个地图对象。 set通过迭代地图创建唯一值。 sorted()将它们整理好。

代码中的原始错误是:

arr_list = arr_list.append(arr)
arr_list = arr_list.sorted()

arr_list.append()是就地操作并返回None,然后将其分配给arr_listNone没有.sorted()方法。