【问题标题】:replace a tuple inside of a list by it's first entry用它的第一个条目替换列表中的元组
【发布时间】:2012-03-17 18:17:26
【问题描述】:

我正在使用 python 3

我有一个不同元组的列表。每个元组的第一个值始终相同,但其余的值不同。如何在包含第一个值的元组之后搜索列表,然后用列表中的新元组替换整个元组? 前任: 这是我的元组:(122, 23, 24, 9)

此元组在列表中,第一个值始终相同,但其余值不同 如何在列表中找到第一个值等于我的元组“122”的元组并将其替换为我的整个元组

(125, 34, 35, 21)

(122, 341, 5, 27)

(124, 31, 51, 7)

【问题讨论】:

  • 您的问题不清楚。您能否发布您要处理的输入的示例,以及所需的输出是什么?
  • 正如我所说,我得到了一个包含一些元组的列表,我需要将列表中的一个元组替换为一个新元组,我需要替换的元组是第一个值等于我要替换它的元组。(元组内的第一个值是 tup[0])

标签: python list replace tuples equals


【解决方案1】:

假设您的列表是 l 并且您的元组是 t 并且您总是只有一个元组要替换:

l[l.index([_ for _ in l if _[0] == t[0]][0])] = t

不漂亮,我承认。

如果列表中有多个匹配第一个值的元组,则仅替换第一个。

【讨论】:

    【解决方案2】:
    a = [(125, 34, 35, 21), (122, 341, 5, 27), (124, 31, 51, 7)]
    t = (122, 23, 24, 9)
    for i, v in enumerate(a):
        if v[0] == t[0]:
            a[i] = t
            break
    

    但是,更改您正在迭代的列表的值有不同的含义,但是因为您在我认为没有问题之后立即中断!请注意,中断意味着您只在列表中查找一个可能的元组,而且如果您的列表包含数百万个条目,如果您的值位于列表的早期,则您不会遍历所有值,以获得更好的性能。

    编辑:

    添加了替换元组t

    【讨论】:

      【解决方案3】:

      您可以使用index 方法或循环遍历列表来搜索列表中的元素。例如index 方法:

      mylist = [(125, 34, 35, 21),
                (122, 341, 5, 27),
                (124, 31, 51, 7)]
      
      idx = mylist.index((122, 341, 5, 27))
      # idx should be '1'
      

      问题是,它仅在准确找到整个元组时才找到条目。所以这可能不是最适合您的解决方案。

      使用循环可能如下所示:

      for idx, itm in enumerate(mylist):
          if itm[0] == 122:
              mylist[idx] = (1,2,3,4,5) # your new tuple
      

      我正在使用enumerate 为列表中的每个元素添加索引。

      【讨论】:

        【解决方案4】:
        l = [(125, 34, 35, 21), (122, 341, 5, 27), (124, 31, 51, 7)]
        t = (122, 23, 24, 9)
        
        out = [t if e[0] == t[0] else e for e in l]
        print(out)
        

        打印出来:

        [(125, 34, 35, 21), (122, 23, 24, 9), (124, 31, 51, 7)]
        

        【讨论】:

        • +1 更漂亮,我在列表理解中忘记了else
        猜你喜欢
        • 2014-03-14
        • 2011-09-07
        • 2013-01-08
        • 2019-06-27
        • 2020-01-10
        • 2019-09-27
        • 2015-02-12
        • 1970-01-01
        • 2021-08-22
        相关资源
        最近更新 更多