居风 2020-12-08 14:05 采纳率: 0%
浏览 4

请大神对该python程序优化,减少该程序执行时的运算量,且结果不变

from itertools import combinations
from collections import Counter
l1 = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]
l2 = list(combinations(l1,12))
#第一次输入条件
l3 = [1,11,21,31] #在这里输入比如2,3,4之类
l3 = [int(x) for x in l3 ]  #将字符串转换成数值
a = 1 #请输入范围最小值
a1 = 2 #请输入范围最大值
l4 = []
for j in l2:
    c = Counter(j) & Counter(l3)
    if a <= len(c)<= a1:
        l4.append(j)
print("第一次过滤后还剩下多少组:",len(l4),'组')
l5 = [2,12,22,32] #在这里输入比如2,3,4之类
l5 = [int(x) for x in l5 ]  #将字符串转换成数值
a = 1 #请输入范围最小值
a1 = 2 #请输入范围最大值
l6 = []
for j in l4:
    c = Counter(j) & Counter(l5)
    if a <= len(c)<= a1:
        l6.append(j)
print("第二次过滤后还剩下多少组:",len(l6),'组')
l7 = [3,13,23,33] #在这里输入比如2,3,4之类
l7 = [int(x) for x in l7 ]  #将字符串转换成数值
a = 1 #请输入范围最小值
a1 = 2 #请输入范围最大值
l8 = []
for j in l6:
    c = Counter(j) & Counter(l7)
    if a <= len(c)<= a1:
        l8.append(j)
print("第三次过滤后还剩下多少组:",len(l8),'组')
l9 = [4,14,24,34] #在这里输入比如2,3,4之类
l9 = [int(x) for x in l9 ]  #将字符串转换成数值
a = 1 #请输入范围最小值
a1 = 2 #请输入范围最大值
l10 = []
for j in l8:
    c = Counter(j) & Counter(l9)
    if a <= len(c)<= a1:
        l10.append(j)
print("第四次过滤后还剩下多少组:",len(l10),'组')
l11 = [5,15,25,35] #在这里输入比如2,3,4之类
l11 = [int(x) for x in l11 ]  #将字符串转换成数值
a = 1 #请输入范围最小值
a1 = 2 #请输入范围最大值
l12 = []
for j in l10:
    c = Counter(j) & Counter(l11)
    if a <= len(c)<= a1:
        l12.append(j)
print("第五次过滤后还剩下多少组:",len(l12),'组')
l13 = [6,16,26,36] #在这里输入比如2,3,4之类
l13 = [int(x) for x in l13 ]  #将字符串转换成数值
a = 1 #请输入范围最小值
a1 = 2 #请输入范围最大值
l14 = []
for j in l12:
    c = Counter(j) & Counter(l13)
    if a <= len(c)<= a1:
        l14.append(j)
print("第六次过滤后还剩下多少组:",len(l14),'组')
l15 = [7,17,27,37] #在这里输入比如2,3,4之类
l15 = [int(x) for x in l15 ]  #将字符串转换成数值
a = 1 #请输入范围最小值
a1 = 2 #请输入范围最大值
l16 = []
for j in l14:
    c = Counter(j) & Counter(l15)
    if a <= len(c)<= a1:
        l16.append(j)
print("第七次过滤后还剩下多少组:",len(l16),'组')
l17 = [8,18,28,38] #在这里输入比如2,3,4之类
l17 = [int(x) for x in l17 ]  #将字符串转换成数值
a = 1 #请输入范围最小值
a1 = 2 #请输入范围最大值
l18 = []
for j in l16:
    c = Counter(j) & Counter(l17)
    if a <= len(c)<= a1:
        l18.append(j)
print("第八次过滤后还剩下多少组:",len(l18),'组')
l19 = [9,19,29,39] #在这里输入比如2,3,4之类
l19 = [int(x) for x in l19 ]  #将字符串转换成数值
a = 1 #请输入范围最小值
a1 = 2 #请输入范围最大值
l20 = []
for j in l18:
    c = Counter(j) & Counter(l19)
    if a <= len(c)<= a1:
        l20.append(j)
print("第九次过滤后还剩下多少组:",len(l20),'组')
l21 = [10,20,30,40] #在这里输入比如2,3,4之类
l21 = [int(x) for x in l21 ]  #将字符串转换成数值
a = 1 #请输入范围最小值
a1 = 2 #请输入范围最大值
l22 = []
for j in l20:
    c = Counter(j) & Counter(l21)
    if a <= len(c)<= a1:
        l22.append(j)
print("第十次过滤后还剩下多少组:",len(l22),'组')
  • 写回答

2条回答 默认 最新

  • 放风喽 2020-12-08 17:47
    关注

    说实话,读不懂,能直白的说下你这个程序的目的吗

    评论

报告相同问题?