【问题标题】:Take numbers from an unsorted string and convert them to a list with each number separated by a comma从未排序的字符串中获取数字并将它们转换为列表,每个数字用逗号分隔
【发布时间】:2017-03-09 14:13:56
【问题描述】:

我有一个意见:

L1 = input()

我希望输出是:

[1, 7, -3, 10, 42, 5, 0, 17]

输入是“1 7 -3 10 42 5 0 17”,这意味着当我打印 L1 时,它会产生:

1 7 -3 10 42 5 0 17

使用 inp(input()) 给我“invalid literal for int() with base 10:”。 使用 .split 不会改变输出。

如果我将用户输入作为列表获取,那么它会产生:

[1 7 -3 10 42 5 0 17]

一串数字不能单独输入,必须整体输入,然后用逗号“分割”。但是;

L1 = input()
L1.split() or L1.split(",")
print(L1)

只是产生...

1 7 -3 10 42 5 0 17

【问题讨论】:

    标签: string list python-3.x


    【解决方案1】:

    为了正确更新 L1,您必须为其分配 L1.split() 返回的值。

    L1 = "1 7 -3 10"
    L1 = L1.split()
    print(L1)
    

    输出: ['1', '7', '-3', '10']

    或者如果你想要一个整数列表:

    L1 = "1 7 -3 10"
    L1 = [int(i) for i in L1.split()]
    print(L1)
    

    输出: [1, 7, -3, 10]

    【讨论】:

    • 谢谢你的回答,正是我需要的。
    • 没问题,如果它按照您计划的方式运行,请随时将其标记为已解决:)
    【解决方案2】:

    如果你想用空格或逗号分割,你应该使用正则表达式分割。此外,拆分项的类型为 str,您可能希望将它们转换为类型 int

    代码如下:

    import re
    L1 = input()
    L1 = [int(i) for i in re.split('[\s,]+', L1) if i]
    print(L1)
    

    【讨论】:

      猜你喜欢
      • 2012-01-17
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多