【问题标题】:Conversion of strings in list to int - not converting将列表中的字符串转换为 int - 不转换
【发布时间】:2021-12-18 08:21:57
【问题描述】:

我正在尝试将以前具有一些整数值、字符串和浮点数的列表全部转换为整数,但是在转换过程中遇到了一些问题。这是我所做的:

class NumbersIterable:
    def __init__(self, numbers):
        self.numbers = numbers
        print(self.numbers)
    
    def runConversion(self):
        return NumbersIterator.convertNumbers(self.numbers)

class NumbersIterator:
    def convertNumbers(numbers):
        print('in numbers')
        for i in numbers:
            int(i)
        print(numbers)
        return numbers

niterable = NumbersIterable(["1", 2.0, "4",5,6.1,"7",8,9.2])
niterable = niterable.runConversion()

sum = 0
for i in niterable:
    print(i)
    sum += i
print("sum =", sum)

在验证过程的过程中,我有一些打印语句,但是在运行 NumbersIterator 中的 for 循环后,打印语句显示列表中的值未转换为整数,因此在运行时会引发错误for 循环再往下。

这里有什么我可能遗漏/拼写错误的地方吗? 谢谢

【问题讨论】:

  • 你对int(i)没有做任何事情
  • 啊,我明白了,谢谢!

标签: python iterator data-conversion python-class


【解决方案1】:

您可以使用简单的列表推导来转换所有数字:

def convertNumbers(numbers):
    return [int(i) for i in numbers]

【讨论】:

    【解决方案2】:

    在您的代码中,int(i)i 转换为整数,然后将其丢弃。您需要将转换后的值存储在列表中。其中一种方法是初始化一个空列表,然后附加int(i)

    class NumbersIterator:
        def convertNumbers(numbers):
            print('in numbers')
            output = []
            for i in numbers:
                output.append(int(i))
            print(numbers)
            return output
    

    或者,列表理解(由 Pedro Maia 提出)或使用 map 会更简洁。

    【讨论】:

      猜你喜欢
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 2018-08-04
      • 2014-05-23
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      相关资源
      最近更新 更多