直接将输入添加到列表中

时间:2017-03-21 14:32:07

标签: python python-2.7 python-3.x

我试图通过直接将输入放入列表来缩短我的代码。这是我的代码:

n = input('Enter: ')
lista = [n[i] for i in range(len(n))]

我想把它放在一行。我尝试了几种变化,但没有一种有效。这甚至可以在python中做到吗?

4 个答案:

答案 0 :(得分:3)

>>> lista = list(input("Enter: "))
Enter: hello
>>> lista
['h', 'e', 'l', 'l', 'o']

或者,如果你坚持绝对必须出于某种原因使用列表理解,

>>> lista = (lambda n: [n[i] for i in range(len(n))])(input("Enter: "))
Enter: hello
>>> lista
['h', 'e', 'l', 'l', 'o']

或者,如果您真正想要的只是将输入作为单个元素放入列表中:

>>> lista = [input("Enter: ")]
Enter: hello
>>> lista
['hello']

答案 1 :(得分:2)

您甚至不需要 range(len(n))使用input,因为您只是从{{返回的字符串中的每个元素创建一个列表1}}。

单行等效只是使用:

lista = list(input('Enter: ')) 

或者,对于Python >= 3.5:

lista = [*input('Enter: ')]

答案 2 :(得分:1)

怎么样:

letters = [letter for letter in input('Enter: ')]

尝试一下:

>>> letters = [letter for letter in input('Enter: ')]
Enter: hello
>>> letters
['h', 'e', 'l', 'l', 'o']

或者,如果您输入一个句子并想要单词,请使用input('Enter: ').split()

答案 3 :(得分:0)

从命令行解析参数到python脚本的另一种有用方法是包argparse

以下示例说明如何解析列表中的参数:

import argparse

parser = argparse.ArgumentParser(description='Parse Arguments')
parser.add_argument('--to-list', nargs='+', help='read Arguments as a list')
args = parser.parse_args()

list = args.to-list

用法是:

python parseArguments.py --to-list Hello World !

>>> list
['Hello','World', '!']