繁体   English   中英

数字字符串到整数列表?

[英]String of numbers to a list of integers?

例如,我已经完成了将一串混合数字(“ 1 3 5 8 10”)转换为任务的任务,我的目标是将这些数字作为整数放入列表中。

我拥有的知识和诀窍分割字符串和INT()他们把他们在为整数,但问题进来,我怎么做。
我遇到的特定问题是遍历字符串,查找字符并将其转换为整数。
当它遍历并达到10(或任何2位数字)时,它会将每个数字变成自己的数字; 因此:10将是[1,0],而不是[10]。

请原谅这里的乱七八糟的代码,我一直在尝试查看打印的每个步骤的内容:

def iq_test(numbers):
    print(numbers)
    nums = []
    numbers.split(" ")
    nums.append(numbers)
    print (numbers)
    for char in numbers:
        if char == " ":
            del char
        else:
            nums.append(int(char))  # Problem arises here, where a 2 digit number is being added to the list as 2 separate numbers
    print(nums)

对于编码来说还是很新的,所以如果您注意到我遇到的一个主要逻辑问题,那么如果您向我指出这一点,我将不胜感激。

首先, numbers.split(" ")本身并没有做任何有用的事情。 将其分配给变量。 另外,如果不提供任何参数,它将始终在空格上分割,因此可以使用它。

nums = numbers.split()

就这样,你应该使用for num in nums来遍历分割元素,而不是遍历输入字符串的字符

无论如何,您都可以通过使用list-comprehension来应用该int函数并返回整数列表来缩短所有这些时间。

并且您已经定义了一个函数,因此您应该return值,而不仅仅是打印它。

nums = [int(s) for s in numbers.split()] 
return nums

然后您将print(iq_test("1 2 3 10"))

您可以使用正则表达式:

import re
s = "1 3 5 8 10"
final_data = list(map(int, re.findall('\d+', s)))
print(final_data)

输出:

[1, 3, 5, 8, 10]
def iq_test(numbers):
    nums = []
    for num in numbers.split():
        nums.append(int(num)) 

我想...您可以(也许应该)只是进行列表理解

 nums = [int(num) for num in numbers.split()]

您使用错误的数组进行迭代,并且执行了一些错误的转换:

def iq_test(numbers):
    print(numbers)
    nums = []
    for number in numbers.split(" "):
         nums.append(int(number))
    print(nums)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM