【问题标题】:how to update the number component in a list of strings如何更新字符串列表中的数字组件
【发布时间】:2017-11-13 11:18:45
【问题描述】:

我有一个清单:

['a1', 'a2', 'a3']

我想更新它,让每个数字分量都加 1:

['a2', 'a3', 'a4']

最有效的方法是什么?

【问题讨论】:

  • 你试过什么?如果它们总是连续的,只需删除第一个并根据最后一个条目附加一个。

标签: python string python-3.x list


【解决方案1】:

如果您的列表保持这种形式,这应该很好:

for x in range(len(l)):
    l[x] = l[x][0] + str(int(l[x][1:]) + 1)

适用于任何数字,如果“a”部分较长,请将 l[x][**1**:] 调整为无数字字符串的长度。

【讨论】:

    【解决方案2】:

    我认为您最好的选择是使用“二维列表”(我不知道这是否是 Python 中的正确术语):

    myList = [['a',1],['a',2],['a',3]...]
    

    您可以使用print(myList[n][0] + str(myList[n][1])) 打印元素,其中n = 您要打印的元素。要增加“数字组件”,您可以使用myList[n][1] += 1,如果您想将其增加 1。

    【讨论】:

      【解决方案3】:

      此解决方案适用于您提供的示例:

      import re
      lst = ['a1', 'a2', 'a3']
      
      def increment(word):
          return re.findall('[a-z]+', word)[0] + str(int(re.findall('\d+', word)[0])+1)
      
      print([increment(i) for i in lst])
      #['a2', 'a3', 'a4']
      

      【讨论】:

        【解决方案4】:

        试试下面的代码,

        import re
        
        lst = ['a1', 'a2', 'a3']
        print map(lambda item:(item[0] + str(int(re.search(r'\d+', item).group())+1)), lst)
        

        此代码使用正则表达式在列表的每个元素中查找整数值,并将整数值递增并与相应的字符串值连接。

        参考:-

        Python map function

        Python lambda (Anonymous) Function

        Python regular expression - search method

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-08-06
          • 2011-08-20
          • 1970-01-01
          • 2013-12-07
          • 2013-10-17
          • 2014-01-16
          • 1970-01-01
          相关资源
          最近更新 更多