这样做有更简单,更有效或更短的方法吗?

时间:2017-08-03 18:54:14

标签: python list input append list-comprehension

finallist = []
for each_time in range(10):
    x = int(input("Whats your number ? "))
    finallist.append(x)

它将"Whats your number ? ".append获得的答案与input()作为int进行了10次排查,我想知道有任何简单的方法可以做到这一点,可能有地图?我也在阅读有关json的类似问题。

finallist.append(int(input("Whats your number ? ")))

我知道我可以这样做,但出于解释的原因,我更愿意写第一篇。

5 个答案:

答案 0 :(得分:5)

可以使用列表理解来完成它:

finallist = [int(input("Whats your number ? ")) for _ in range(10)]

但我wouldn't recommend doing it,因为不太清楚发生了什么。

或者,正如Python的Zen所说:

>>> import this
...
Explicit is better than implicit.

当您的函数没有副作用时,列表推导(以及mapfilterreduce等)最佳。并要求用户输入有副作用。

答案 1 :(得分:2)

你可以使用理解:

numbers = [int(input("Number please")) for i in range(10)]

答案 2 :(得分:2)

使用理解总是替代for循环:

finallist = [int(input("Whats your number ? ")) for _ in range(10)]

答案 3 :(得分:1)

result = []
while not len(result) == 10:
    result += [input('What is your number? ')]

答案 4 :(得分:0)

考虑允许用户在一次用空格分隔的时候输入所有这些内容,这些内容沿着以下几行:

while True:
    s = input("Enter 10 numbers (separated by spaces)? ").split()
    if len(s) != 10:
        print("Sorry, that was {} values, try again".format(len(s)))
    else:
        finallist = [int(n) for n in s]
        break