检查字符串列表中的重复项

2024-10-04 01:36:22 发布

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

我想检查列中随机大小的字符串是否重复。如果是这样,python应该打印出观察到错误的哪一行。在

我的代码如下:

import numpy as np
data = np.array([["s154090","Lis",1,0],["s151515","Lars",2,3],["s151515","Preben",1,0],["s154080","Rene",5,7]])

def sortGrades(data):

    studentId = data[:,0]
    xs = studentId
    s = set()
    if any(i in s or s.add(i) for i in xs):
        s = set()
        duplicates = set(i for i in xs if i in s or s.add(i))
        print("Error in line {},".format(i),"Det følgende Studie ID går igen",duplicates)
    else:
        print("Ingen Fejl")
        return ""

但是它不起作用,因为i没有定义。在

---> 11 print("Error in line {},".format(i),"Det følgende Studie ID går igen",duplicates)

NameError: name 'i' is not defined

我使用的是python3.5。在


Tags: orinaddfordataifnpline
1条回答
网友
1楼 · 发布于 2024-10-04 01:36:22

除了例外,你的方法有点太复杂了。例如,您只需要传递一次数据:

def sortGrades(data):
    studentId = data[:,0]
    xs = studentId
    s = set()
    for line, val in enumerate(xs):
        if val in s:  # if the current value was already seen print the error message
            print("Error in line {},".format(line),"Det følgende Studie ID går igen", val)
        # Add the value
        s.add(val)

>>> sortGrades(data)
Error in line 2, Det følgende Studie ID går igen s151515

当您试图在循环变量的作用域之外访问可理解的循环变量时,就会出现异常(这是不可能的,至少在python-3.x中是这样)。所以一旦你的理解完成,你就不能再访问i。在

这就是为什么我使用显式的for-循环。这样就可以访问循环变量。在


如果你真的想偷懒,你也可以使用我编写的外部模块中的一个函数:^{}

^{pr2}$

相关问题 更多 >