python去重实现

#1:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

def getthreenum(num):
    for i in range(num):
        for j in range(num):
            for k in range(num):
                for l in range(num):
                    set1 = {i,j,k}
                    set2 = {i,j,l}
                    set3 = {j, k, l}
                    set4 = {i, k, l}
                    if i not in set3 and j not in set4 and k not in set2 and l not in set1:
                        print(i,j,k,l)

#调用方法:getthreenum(6)

#2、如何去除里面重复的元素?

def listremoverepeat(a):
    d = {}
    i1 = 0
    for i in a:
        d[i] = i1
        i1 = i1 + 1
    print(d)
    l = d.keys()
    l2 = []
    for i in l:
        l2.append(i)
    print(l2)

调用方法:

a = ['192.168.245.2', '192.168.245.20', '192.168.245.2', '192.168.245.20', '192. 168.245.20', '192.168.245.1',
     '192.168.245.1']
listremoverepeat(a)

# 3、明明的随机数
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1
到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,
#不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做
#调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)

def 明明的随机数(num1, num2):
    list = []
    for i in range(num1, num2):
        rand = random.randint(num1, num2)
        list.append(rand)
    list.sort() #排序
    print(set(list))    #使用集合去重

#调用方法:
明明的随机数(1, 1000)
# 4、去重找数
1、有四个数字:1,2,3,4,能组成多少个互不相同且无重复数字的三位数?一共有多少个数字?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

def 去重找数(list):
    src = []
    dst = []
    列表排列组合(list, src, dst)
    print('总数:',len(dst))
调用方法
去重找数([1, 2, 3, 4, 5])

#7、位次排序
1、在一次数学竞赛中,A、B、C、D、E五名同学分别获得了前五名(假设无并列名次)。
小敏问他们分别是第几名,A、B、C、D、E这五位同学每人只说对一半。他们的回答如下:
#A:第二名是D,第三名是B
B:第二名是C,第四名是E
C:第一名是E,第五名是A
D:第三名是C,第四名是A
E:第二名是B,第五名是D
请问正确的答案是:

def getrightanswer():
    l1 = ['D2', 'B3']
    l2 = ['C2', 'E4']
    l3 = ['E1', 'A5']
    l4 = ['C3', 'A4']
    l5 = ['B2', 'D5']
    l = [l1, l2, l3, l4, l5]
    #从l1-l5中每个取一个数,如D2 C2 E1 C3 B2,对取到的数进行判断,如果字母和数字其中一个出现重复,则抛弃,直到最后没有出现重复的为止即答案

    rets = []
    for i1 in l1:
        for i2 in l2:
            for i3 in l3:
                for i4 in l4:
                    for i5 in l5:
                        ret = [i1, i2, i3, i4, i5]
                        rets.append(ret)
    print('所有组合:',len(rets), rets)
    #得到32=2**5种组合,接下来需要对每种组合做判断
    for i in rets:
        str = ' '.join(i)
        same = False
        for j in i:
            if str.count(j[0]) == 1 and str.count(j[1]) == 1:
                same = False
            else:
                same = True
                break
        if same == False:
            print("结果:",str)

#调用方法
getrightanswer()
#8、谁说谎
2、甲、乙、丙、丁四人中有一人做了好事不留姓名。请大家编写程序,根据以下线索找出做好事的人。
#甲:不是我
乙:是丙
#丙:是丁
#丁:丙说的不对
其中三人说的是真话,一人说的是假话。
#请问谁说的是假话:丙

def guessISwho():
    l1 = ['甲0']
    l2 = ['丙1']
    l3 = ['丁1']
    l4 = ['丁0']
    l = [l1, l2, l3, l4]
    #先把0的部分使用其他替代,从而取消字符串里的数字,留下了备选答案
    for i in l:
        if i[0][1] == '0':
            str1 = '甲乙丙丁'
            i[0] = str1.replace(i[0][0], '')
        else:
            i[0] = i[0].replace(i[0][1], '')
        print(i)
    #四个人有三个说的是真话,一个说假话,说明有三个交集是一样的,没有出现交集的那个就是假话
    #因此,做好事的人是丙,说假话的也是丙:
    str1 = "".join(l1)
    r1 = set(str1)
    str1 = "".join(l2)
    r2 = set(str1)
    str1 = "".join(l3)
    r3 = set(str1)
    str1 = "".join(l4)
    r4 = set(str1)
    rr = [r1, r2, r3, r4]
    #四种情况取出三个的组合有以下四种情况,情况过去简单不做遍历,或是使用下面方法找出组合方式
    r = [1, 2, 3, 4]
    ret = []
    for i in r:
        for j in r:
            for k in r:
                if i != j and j != k and i != k:
                    sortl = [i, j, k]
                    sortl.sort()
                    ret.append(sortl)
    #print(ret)
    #去重处理
    for i in ret:
        if ret.count(i) > 1:
            temp = i
            for j in range(ret.count(i)):
                ret.remove(i)
            ret.append(temp)
    print(ret)
    i1 = 0
    s0 = set()
    for i in ret:
        j1 = 0
        for j in i:
            if j1 == 0:
                s0 ^= rr[0]
            if j1 > 0:
                s0 &= rr[j - 1]
            j1 += 1
        i1 +=1
        if len(s0) > 0:
            print('结果是:', s0)
#调用方法
       guessISwho()

#9、移动列表
3、[‘taobao’,‘jingdong’,‘alibaba’,‘baidu’,‘taobao’]对元素去重复

def movelist(list):
    s = set(list)
    l = []
    for i in s:
        l.append(i)
    print(l)
    return l
#调用方法
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print("移动数列")
print(l)
l = movelist(l)
以下是一个Python去重脚本的示例代码: ```python import os import glob import filecmp dir_path = r'D:\文件去重' file_list = \[\] count = 0 for i in glob.glob(dir_path + '/**/*', recursive=True): if os.path.isfile(i): file_list.append(i) for x in file_list: for y in file_list: if x != y and os.path.exists(x) and os.path.exists(y): if filecmp.cmp(x, y): os.remove(y) count += 1 print(f"运行结束,一共删除了{count}个重复文件") ``` 这个脚本可以用于清除文件夹的重复文件。它使用了os模块来与操作系统进行交互,glob模块用于查找文件目录和文件,并将搜索结果返回到一个列表,filecmp模块用于比较文件的内容。脚本首先将文件添加到一个列表,然后使用嵌套循环比较列表的文件,如果发现重复的文件,则删除其一个。最后,脚本会输出删除的重复文件的数量。 #### 引用[.reference_title] - *1* [python 图片去重脚本](https://blog.csdn.net/HaoZiHuang/article/details/127756170)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Python 实用脚本 实现文件重复去重](https://blog.csdn.net/Abieai/article/details/128836571)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值