【问题标题】:Input a list using Python使用 Python 输入列表
【发布时间】:2012-11-05 03:51:42
【问题描述】:

我的python知识有一点小问题(新手)。 我正在尝试做的事情是将字符串列表输入到变量中,然后我需要做一些循环遍历列表并从列表中返回几个字符串。

问题是我不知道如何将列表输入到变量中。

这是我尝试过的代码:

x=[]
x=(input('Please enter a list of strings: '))

...然后我输入['car', 'house', 't-shirt', 'bicycle', 'images'] 假设x 将是一个带有字符串列表的变量,但它不是。

请帮忙。 谢谢!

【问题讨论】:

  • 但它是什么?尝试print repr(x) 以查看输入后x 中的内容。哦,你不必在 python 中声明列表。 x=[] 将被 input('Please enter a list of strings: ') 覆盖
  • 我猜所有列表都保存为一个字符串。当我在 x: print(i) 中执行 for i 时,它按字符串返回整个导入的列表字符串
  • 所以,如果用户输入python格式的列表很重要,你可以使用x = eval(x),但这很危险,因为可以输入恶意数据。我建议您通过空格或换行符让用户输入单词,例如car house t-shirt,然后在输入后使用x = x.split()
  • 感谢 Ashwini,我会用空格和 .split() 尝试这个想法
  • @alex_jordan 对于这个应用程序,使用ast.literal_eval() 比使用eval() 更安全

标签: python list import python-3.x


【解决方案1】:

我假设您使用的是 Python 3(如果这是 Python 2 代码,那么您就有问题了)。

来自documentation

input(...): ...函数然后从输入中读取一行,并将其转换 到一个字符串(去掉一个尾随的换行符),并返回它。

所以,input() 返回一个字符串。不是列表或任何东西。

当然,您可以split() 逗号后面的字符串,strip() 结尾的字符,如 '[' 或 ']'。

【讨论】:

  • 错了。 input() 的帮助告诉你:相当于 eval(raw_input(prompt))。因此它会评估键入为 Python 表达式的内容。
  • @Alfe 我不赞成你的反对票。你说的是 Python 2,而 Evert 指定了 Python 3。stackoverflow.com/questions/4915361/…
  • 哦,我没有注意到标题中Python 3的限制。对此感到抱歉。也许 P2 和 P3 之间的区别真的是提问者偶然发现的。
【解决方案2】:

我假设您使用的是 python 3.x。 如果您尝试输入列表,使用input 我认为即使您输入['car', 'house', 't-shirt', 'bicycle', 'images'],数据也会被视为字符串

您可以尝试将数据转换为列表:

str_x = input('Please enter a list of strings: '))
x = [s.strip() for s in str_x[1:-1].split(',')]   # String to List conversion

【讨论】:

    【解决方案3】:

    这是另一种方法:

    >>> x=input('Please enter a list of strings: ').split(sep=', ')
    Please enter a list of strings: hi, there, stack, overflow
    >>> print(x)
    ['hi', 'there', 'stack', 'overflow']
    

    这样您就可以让 input() 完成工作,因为它默认将输入作为字符串。 .split() 返回一个列表,但你总是可以使用

    x=list(input(...))
    

    以防万一将来的版本决定返回一个元组。

    您也可以更改分隔符,即您可以只使用逗号,而不是逗号和空格,这取决于您自己的风格。

    【讨论】:

      【解决方案4】:

      在 Python 2 中,这将起作用

      x=raw_input('Please enter a list of strings: ').split()
      print x
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-04
        • 1970-01-01
        • 1970-01-01
        • 2019-07-21
        相关资源
        最近更新 更多