【问题标题】:Cannot convert from str to int in list (python) [duplicate]无法从列表中的str转换为int(python)[重复]
【发布时间】:2016-06-23 03:05:58
【问题描述】:
def prepare_for_sort(st):
 nums = str(st).split()
 for each in nums:
    each = int(each)
 print(nums)

st 是数字为“20 50 4 8 4 64 6 47 8”的字符串。 Nums 必须是整数数组。为什么这不起作用?

【问题讨论】:

  • st 似乎不是您期望的那样,因为"20 50 4 8 4 64 6 47 8" 作为输入至少没有错误。仍然没有做你想做的事
  • 即使您正确地将nums 放入整数列表中,您也不会返回来自prepare_for_sort 的任何内容,因此您的所有工作都是徒劳的。

标签: python list for-loop type-conversion


【解决方案1】:

这不起作用,因为您的变量each 是对某个对象的引用:首先,指向同样包含在列表中的对象,然后指向整数对象。但是,each 与您要操作的内容的列表没有任何关联。

您可以就地操作列表:

for index, value in enumerate(nums):
    nums[index] = int(value)

或者您可以创建一个新列表:

nums = [int(value) for value in nums]

【讨论】:

    【解决方案2】:

    如果您能以任何方式避免它,请不要在循环遍历列表时修改列表的元素。它只会让你陷入困境。 相反,试试这个:

    def prepare_for_sort(st):
        nums = str(st).split()
        new_nums = []
        for each in nums:
            new_nums.append(int(each))
        print(new_nums)
    

    或者,甚至更短,使用列表推导:

    def prepare_for_sort(st):
        nums = str(st).split()
        new_nums = [int(x) for x in nums]
        print(new_nums)
    

    【讨论】:

      【解决方案3】:

      试试这个:

      def prepare_for_sort(st):
          nums = str(st).split()
          arrNums = [int(each) for each in nums]
          return arrNums
      

      当然,你需要确保函数接收到的字符串总是只有整数和空格。

      【讨论】:

        【解决方案4】:

        正如您目前拥有的那样,您正试图从 for 循环内部修改列表中的值,但这不起作用,因为您只是 重新分配变量 each在 for 循环中。 for 循环将简单地丢弃此值,以便将each 分配给列表中的下一项。您对each 所做的任何更改都将被丢弃,因为它们完全独立于nums 列表。

        您实际上可以通过列表理解来实现您的目标。

        nums = "20 50 4 8 4 64 6 47 8"
        actual_nums = [int(n) for n in nums.split()]
        

        或者,如果您真的想在循环中执行此操作。您可以为循环使用索引,以便实际修改列表。

        for k in range(len(nums)):
            nums[k] = int(nums[k]);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-03
          • 2019-10-23
          • 2013-09-27
          • 2015-03-23
          • 2015-08-16
          • 2023-03-21
          • 2023-04-06
          • 1970-01-01
          相关资源
          最近更新 更多