【问题标题】:Joining elements in list of Strings in loop with a condition使用条件连接循环中的字符串列表中的元素
【发布时间】:2021-01-13 12:02:33
【问题描述】:

每 2 个元素应加入一个循环,直到列表末尾 这就是我一直在尝试做的事情

items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
for i in range(len(items)+1):
  items[i]=items[i]+items[i+1]
  i=i+2
print(items)

预期输出:['ab' , 'cd' , 'ef' , 'gh' , 'ij']

【问题讨论】:

    标签: python python-3.x string list


    【解决方案1】:

    您可以向range 提供另一个参数来指定增量(“步长”):

    items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
    res = []
    for i in range(0, len(items), 2):
        res.append(items[i] + items[i + 1])
    print(res)
    # ['ab', 'cd', 'ef', 'gh', 'ij']
    

    或者,更好的是,改用list comprehension

    items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
    items = [items[i] + items[i + 1] for i in range(0, len(items), 2)]
    print(items)
    # ['ab', 'cd', 'ef', 'gh', 'ij']
    

    【讨论】:

      【解决方案2】:

      你可以像这样使用列表推导来做到这一点:

      items = [items[i] + items[i+1] for i in range(0, len(items), 2)]
      

      【讨论】:

      • 如果我可以改用join[''.join(items[i:i+2]) for i in range(0, len(items), 2)]
      【解决方案3】:

      正则表达式的解决方案:

      >>> import re
      >>> items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
      >>> re.findall('.{1,2}', ''.join(items))
      ['ab', 'cd', 'ef', 'gh', 'ij']
      

      【讨论】:

      • 这里的限制是它假定列表的元素是单个字符。但是,无论如何,+1 可以很好地处理奇数长度的列表情况。
      【解决方案4】:

      您的想法是正确的,我会仔细检查您的打印声明。您正在打印项目,但正在将项目 [i] 更新为项目 [i] + 项目 [i+1]。我相信你想打印你正在更新的变量。

      【讨论】:

      • 不,不是。在 for 循环中设置 i 对其下一个值没有影响。仍然运行 i 连续设置为每个整数 range(len(items)+1)。 (实际上应该是range(len(items)-1)
      • 我以为他在循环中打印。你是对的。
      【解决方案5】:

      首先,你需要知道len()返回的是number项,而不是数组的大小(记住数组索引从0开始)。 Here,如果需要,可以查看 len() 函数的文档。

      接下来,只是通知您,您可以使用方法append() 将对象插入到数组的最终位置。 Here你可以找到一些关于数组的信息。

      此外,我想在python中添加它,当使用range时,您可以利用可以传递给范围的step值:range(start, stop, step)。你可以阅读更多关于它的信息here

      这么说,我会做如下事情:

      output=[]
      for i in range(0, len(items), 2):
          output.append(items[i]+items[i+1]);
      print(output)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多