Python遍历嵌套列表,但只遍历偶数索引

2024-04-16 20:59:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个嵌套列表,例如: L = [[A,200][B,300][C,500][A,300]] 我想知道是否只有字母是重复的,而不是数字。我试过了,但这也会告诉我这些数字是否重复

def find_duplicates(L):
    for list in L:
        for number in list:
            print(max(Counter(sum(L, [])).values()) > 1)

我不知道是否要将列表展平,然后只遍历单个列表(但这会破坏嵌套列表的目的),或者是否有方法检查每个子列表的第一个索引。 有人能告诉我怎么做吗

谢谢大家!


Tags: innumber列表fordef字母counter数字
3条回答

我建议使用pandas,将您的列表转换为一个数据框,它将允许您指定使用哪一列,并允许您在列表上定义多个操作

import pandas as pd

L = [['A',200],['B',300],['C',500],['A',300]]
df = pd.DataFrame(L,columns=['letters','numbers'])

has_dup = df['letters'].duplicated().any()

if has_dup : 
  print("L has duplicate letters")

在遍历子列表时,可以使用集合来跟踪已“看到”的字母:

def has_duplicates(L):
    seen = set()
    for letter, _ in L:
        if letter in seen:
            return True
        seen.add(letter)
    return False

您可以使用setdict来保存元素记录,并检查之前是否已找到元素:

L = [['A',200], ['B',300], ['C',500], ['A',300]]
existing_set = dict()
for letter, number in L:
    if letter in existing_set:
        print(letter, 'is a duplicate')
        existing_set[letter].append(letter)
    else:
        existing_set[letter] =[letter]

请注意,还为每个关键点指定了数字列表,以便您可以跟踪与字母关联的数字

相关问题 更多 >