阅读列表python

时间:2014-05-01 18:33:33

标签: python

我正在编写一个读入列表的程序,然后显示列表的长度,并显示每行显示一个数字的列表。这就是我到目前为止所做的:

from List import *

def main():
   numbers = eval(input("Give me an list of integers: "))
   strings = ArrayToList(numbers)
   length = len(strings)
   print("The length of the list: ", length)

这就是我期待的结果:

Enter a list of integers: [3, [5, [1, [6, [7, None]]]]]
The length of the list:
5
The list:
3
5
1
6
7

有人可以帮帮我吗?我得到列表的长度显示为2而不是5,这应该是它。

4 个答案:

答案 0 :(得分:4)

如果没有看到ArrayToList的实现,这只是猜测。

那就是说,我想你的问题是你没有输入整数列表,你输入的是一个由整数和另一个列表组成的列表......它本身就是一个包含整数和另一个列表的列表,一直往下。因此len(strings)为2,因为len不是递归的。

您可以尝试输入[1, 2, 3, 4, 5]之类的列表。

或者,您可以在循环中构建列表,询问每个字符的用户输入,直到命中“输入结束”事件(您选择的)为止。这样可以让你完全避免eval,这通常是一个好主意。

答案 1 :(得分:1)

def main():
    numbers = input("Give me a list of space-separated integers: ").split()
    print("length of the list:", len(numbers))
    print("The list:", *numbers, sep='\n')

输出

In [14]: main()
Give me a list of space-separated integers: 3 5 1 6 7
length of the list: 5
The list:
3
5
1
6
7

答案 2 :(得分:0)

我假设您在Python3,因为在Python2中,您不需要eval周围input

numbers = eval(input("Give me an list of integers: "))
length = len(numbers)
print("The length of the list: %d" % length)
print("The list: ")
for i in numbers:
  print(i)

在这里,您必须以标准Python方式输入列表:

[1,2,3,4,5]

Python2中的等价物只会是一行更改。

numbers = input("Give me an list of integers: ")

答案 3 :(得分:0)

Python 2我会这样做:

def main():
    numbers = []
    integers = []
    numbers.append(raw_input("Give me an list of integers: "))
    for integer in numbers[0]:
        print integer
        if integer.isdigit():
            integers.append(integer)
    print ("The length of the list: ", len(integers))

main()