我试图通过直接将输入放入列表来缩短我的代码。这是我的代码:
n = input('Enter: ')
lista = [n[i] for i in range(len(n))]
我想把它放在一行。我尝试了几种变化,但没有一种有效。这甚至可以在python中做到吗?
答案 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', '!']