【问题标题】:How to convert a String into an Int in a Python List [closed]如何将字符串转换为 Python 列表中的 Int [关闭]
【发布时间】:2018-01-21 23:42:26
【问题描述】:

如果我有一个包含数字和单词的字符串列表,我如何将数字转换为整数并将单词作为字符串保留在列表中?

例如,这个:

badList = ['56','45','01','cat','64','dog'] 

会变成:

badList = [56, 45, 01, 'cat', 64, 'dog']

【问题讨论】:

  • 目前尚不清楚,您是否希望更改原始列表(不创建新列表) - 这是您的书面文本所说的,或者您是否想要修改后的新列表。跨度>
  • 我修好了,谢谢指出!

标签: python python-3.x list int


【解决方案1】:

您可以使用单行列表推导式

good_list = [int(item) if item.isdigit() else item for item in bad_list]

【讨论】:

    【解决方案2】:

    一个简单的方法是使用 string.isdigit()

    good_list = []
    for element in bad_list:
        if element.isdigit():
            good_list.append(int(element))
        else:
            good_list.append(element)
    

    【讨论】:

      【解决方案3】:

      您可以将所有内容转换为 int 并捕获任何不属于 int 类型的错误并将它们附加为如下字符串:

      badList = ['56','45','01','cat','64','dog']
      goodList = []
      
      for o in badList:
      
          try: goodList.append(int(o))
      
          except ValueError: goodList.append(str(o))
      print(goodList)
      

      【讨论】:

      • 仅供参考,在 if/else 执行相同工作的地方使用异常是 anti pattern
      • @ArneRecknagel 谢谢,但你给我的链接不起作用
      • 奇怪,我选择了一个存档链接以使其不会中断。这是原文:wiki.c2.com/?DontUseExceptionsForFlowControl
      • @ArneRecknagel 是的,一个工作正常。
      【解决方案4】:

      如果你更喜欢使用异常,你可以试试:

      bad_list = ['56','45','01','cat','64','dog'] 
      good_list = []
      for item in bad_list:
          try:
              good_list.append(int(item))
          except ValueError:
              good_list.append(item)
      print(good_list)
      

      顺便说一句:我根据常见的 python 命名约定修复了变量...

      【讨论】:

        【解决方案5】:

        运行一个循环

        goodList=badList[:]
        for i in range(len(goodList)):
            if(goodList[i].isdigit()):
                goodList[i]=int(goodList[i])
        

        【讨论】:

        • 使用这个解决方案,你正在改变“goodList”——这可能是也可能不是有意的......(操作并不具体)
        • 你想说我正在修改“badList”吗?
        • 不,您正在更改 goodList 并添加一个附加标签 badList。 goodList 和 badList 都指向内存中的相同数据结构。只需添加print(goodList, badList) badList.append("demo") print(goodList, badList) 即可快速演示效果。
        猜你喜欢
        • 2013-11-21
        • 1970-01-01
        • 1970-01-01
        • 2016-08-11
        • 2022-01-03
        • 2018-04-08
        • 2019-07-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多