【问题标题】:converting a single integer number input to a list in python将单个整数输入转换为python中的列表
【发布时间】:2012-01-20 18:21:27
【问题描述】:

我正在寻找 python 中的单行命令来将整数输入转换为列表。 以下是情况。

mylist=[]
mylist=list(input('Enter the numbers: '))

如果我提供多个数字作为输入,上述行完美运行。例如 1,2,3 。但是当我只输入一个数字时它会给出错误。例如: 1 。说它不能将整数转换为列表。 我不想运行一个循环询问用户每个输入。所以我想要一个单行命令,它适用于用户输入的 onemore 数字输入,用逗号分隔。

谢谢你, -indiajoe

【问题讨论】:

    标签: python list input


    【解决方案1】:

    我认为你能做的最简单的事情是:

    mylist = map(int, raw_input('Enter the numbers: ').split(','))
    

    但这与使用列表推导几乎相同。

    【讨论】:

      【解决方案2】:

      您应该使用raw_input 并通过列表理解转换为int

      user_input = raw_input('Enter the numbers: ')
      my_list = [int(i) for i in user_input.split(',')]
      

      offical documentationraw_input 从输入中读取一行,将其转换为字符串(去除尾随的换行符),然后返回。

      【讨论】:

      • 您也可以使用 eval 将您的字符串列表转换为 int:mylist = map(eval, mylist)
      • 谢谢,但我试图精确地避免这个循环。没有这种常用的衬垫吗?如果没有,我将继续使用这种循环方法。
      • @SRC:在用户输入上使用 eval 是一种不好的做法!只有在真的需要并进行必要的检查时,您才应该这样做。
      • @indiajoe:无论如何你都会有循环,可以隐藏在地图中,但无论如何都会有!鉴于此,在列表理解或映射(或过滤器等)之间进行选择只是一个品味问题。不过你应该知道,在 python-3 中map 是一个生成器表达式,所以万一有一天你会发现自己移植自己的代码,只记得用列表包装 map(如果你需要一个列表而不是生成器),喜欢list(map(...))
      • @RikPoggi:感谢您提供有关 python 3 的信息。
      【解决方案3】:

      input eval() 是您输入的内容。所以,当你输入1,2,3,结果是tuple;当您键入1 时,结果是int。尝试输入 1, 而不是 1。请注意,您的第一行 (mylist=[]) 是不必要的。

      【讨论】:

      • 是的,在整数后输入逗号即可。例如: 1、但是要求用户多加逗号看起来有点不整洁。或者我将不得不添加一个 try: except: 块来捕捉并纠正它。
      • 按照这种方法,这将起作用:mylist=list(eval(raw_input('Enter the numbers: ')+','))。 (用raw_input 和逗号做eval)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      • 2017-11-28
      • 1970-01-01
      • 2022-07-04
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      相关资源
      最近更新 更多