鱼C论坛

 找回密码
 立即注册
查看: 8868|回复: 43

[技术交流] Python:每日一题 139

[复制链接]
发表于 2018-1-12 14:00:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 冬雪雪冬 于 2018-1-15 18:05 编辑

我们的玩法做了一下改变:

1. 楼主不再提供答案。
2. 请大家先独立思考”,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:
已有一个由小到大数字组成列表,
list1 = [3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]
要求将数字是列表中其他数字倍数的剔除,如15, 24是3的倍数,就将15,24去除,14,21是7的倍数,就将14,21去除。注意数字仅是其本身的1倍,如3是3的1倍,是不需要去除的,否则最后的列表就成空的了。
要求给出最后剩余的列表。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-12 15:34:51 | 显示全部楼层
本帖最后由 shigure_takimi 于 2018-1-12 16:39 编辑
  1. list1 = [3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]

  2. # 方法1:

  3. length = len(list1)
  4. result = [list1[0]]
  5. for index in range(1, length):
  6.     for i in list1[:index]:
  7.         if list1[index] % i == 0:
  8.             break
  9.     else:
  10.         result.append(list1[index])
  11. print(result)

  12. # 方法2:
  13. for i in list1[1:]:
  14.     for j in list1[:list1.index(i)]:
  15.         if i % j == 0:
  16.             list1.remove(i)
  17.             break
  18. print(list1)

  19. #  [3, 7, 10, 11, 17, 19, 26, 32, 41, 43, 53, 74, 103, 107, 116, 142, 158, 163, 173, 179, 181, 188, 218, 235, 239, 248, 251, 262, 278, 292, 295, 305, 313, 317, 332, 334, 347, 355, 365, 368, 377, 445, 466]

  20. #  list1 = list(range(3,10000))时,方法1耗时2.84秒,方法2耗时0.98秒。
  21. #  list1 = list(range(3,50000))时,方法1耗时59.98秒,方法2耗时17.06秒。
  22. #  list1 = list(range(3,100000))时,方法1耗时272.97秒,方法2耗时70.5 秒。
  23. #  我好有耐心呀。
复制代码

点评

真要追求效率的话,用标记法。100000个数据0.3秒出结果^_^  发表于 2018-1-12 17:17

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
冬雪雪冬 + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 15:38:00 | 显示全部楼层
  1. list1 = [3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]
  2. number = len(list1)
  3. answer = []
  4. def prime(a):
  5.     for i in range(2,a):
  6.         if a % i == 0:
  7.             return False
  8.     return True

  9. for i in range(0,number-1):
  10.     b = prime(list1[i])
  11.     if b :
  12.         answer.append(list1[i])
  13. list1 = answer
  14. print(list1)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 15:52:14 | 显示全部楼层
本帖最后由 jerryxjr1220 于 2018-1-12 17:23 编辑
  1. list1 = [3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]
  2. from functools import reduce
  3. print(sorted(list(reduce((lambda a,b:a&b), (set(list1)-set(range(e*2,495,e)) for e in list1)))))
复制代码

[3, 7, 10, 11, 17, 19, 26, 32, 41, 43, 53, 74, 103, 107, 116, 142, 158, 163, 173, 179, 181, 188, 218, 235, 239, 248, 251, 262, 278, 292, 295, 305, 313, 317, 332, 334, 347, 355, 365, 368, 377, 445, 466]

再写个标记法:效率第一
  1. def func(lst):
  2.         import numpy as np
  3.         num = np.zeros(max(lst)+1,dtype='int8')
  4.         for i in reversed(lst):
  5.                 num[i] = 1
  6.                 num[i+i::i] = 0
  7.         return np.nonzero(num)[0].tolist()
复制代码

这个方法用来筛选质数,效率也是非常高的。
  1. list1 = list(range(2,100000))
  2. print(func(list1))
复制代码

10万以下的质数,0.3秒

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 15:58:29 | 显示全部楼层
list1 = [3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]
for i in list1:
    for m in list1:
        if i != m:
            if m%i == 0:
                list1.remove(m)

print(list1)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 17:09:05 | 显示全部楼层
初学者用笨方法,也算是一种学习。
l1=[……]     # l1赋值这里省略了……
l2=l1[:]
l2.reverse()
l3=[]
for i in l2:
        for j in l1:
                if i != j and i%j==0:
                        l3.append(i)
                        break
for i in l3:
        l2.remove(i)
l2.reverse()
print(l2)

结果:
[3, 7, 10, 11, 17, 19, 26, 32, 41, 43, 53, 74, 103, 107, 116, 142, 158, 163, 173, 179, 181, 188, 218, 235, 239, 248, 251, 262, 278, 292, 295, 305, 313, 317, 332, 334, 347, 355, 365, 368, 377, 445, 466]

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 18:26:23 | 显示全部楼层
[3, 7, 10, 11, 17, 19, 26, 32, 39, 41, 43, 48, 53, 74, 103, 107, 116, 142, 158, 163, 173, 179, 181, 188, 216, 218, 235, 239, 248, 251, 262, 278, 292, 295, 305, 313, 317, 332, 334, 347, 355, 365, 368, 377, 417, 445, 466]

OldList=[3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]
NewList=[3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]

for i in range(len(OldList)):
    print('列表长度:',len(OldList))
    print('i的值:',i)
    for j in range(i+1,len(OldList)):
        print('j的值:',j)
        if(OldList[j]%OldList[i]==0):
            print('被除数:',OldList[i])
            print('除数:',OldList[j])
            NewList.remove(OldList[j])
            print('删除后的数组:',NewList)
            OldList = NewList
            print('列表的长度:',len(OldList))
            print('j+1',j+1)
            if(j+1 >=len(OldList)):
                break
        if(j+1 >=  len(OldList)):
                break
            
    print('-------------------------------------')

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 18:35:10 | 显示全部楼层
本帖最后由 shigure_takimi 于 2018-1-12 18:36 编辑


感谢 jerryxjr1220的点评。因为是自学,以前也没学过编程,不知道标记法。我去查一查。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 19:33:38 | 显示全部楼层
list1 = [3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]
list2 = []
for i in list1:
        n=0
        for j in range(3,500):
                if (i % j) == 0:
                        n+=1
        if n==1:
                list2.append(i)
print(list2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 20:03:54 | 显示全部楼层
  1. def delete_element(old_list):
  2.         new_list = old_list[:]
  3.         for i in new_list:
  4.                 for j in new_list:
  5.                         if (i%j == 0) and (i!=j):
  6.                                 old_list.remove(i)
  7.                                 break        ####
  8.         return old_list
  9. list1 = [3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]
  10. out = delete_element(list1)
  11. print(out)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 20:19:29 | 显示全部楼层
'''一个2重循环'''

list1 = [3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]
list2 = []
while list1:
    '''弹出第一个数字进入list2'''
    num = list1.pop(0)
    list2.append(num)
   
    '''在list1中消去该数字的倍数'''
    for i in range(num*2,495,num):
        if i in list1:
            list1.remove(i)
print(list2)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 21:11:46 | 显示全部楼层
直接算出所有倍数,然后用差集处理
  1. def fun(lst):
  2.     result = set(lst)
  3.     for num in lst:
  4.         multiple = {num * i for i in range(2, lst[-1]//num + 1)}
  5.         result -= multiple
  6.     return sorted(result)
复制代码

求余处理
  1. def fun2(lst):
  2.     result = lst[:]
  3.     for i in lst:
  4.         for j in lst[lst.index(i)+1:]:
  5.             if not j%i and j in result:
  6.                 result.remove(j)
  7.     return result
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 22:54:55 | 显示全部楼层
  1. def remove_multiple(ls):
  2.     max_multiple = max(ls) // min(ls)
  3.     i = 0
  4.     while True:
  5.         num = ls[i]
  6.         for j in range(2, max_multiple):
  7.             num_multiple = num * j
  8.             if num_multiple in ls:
  9.                 ls.remove(num_multiple)
  10.             elif num_multiple > max(ls):
  11.                 break
  12.         i += 1
  13.         if i == len(ls) - 1:
  14.             return ls



  15. if __name__ == '__main__':
  16.    
  17.     ls = [
  18.         3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43,
  19.         45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171,
  20.         173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253,
  21.         258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365,
  22.         366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494
  23.     ]
  24.     print(remove_multiple(ls))
  25.    
复制代码

结果:[3, 7, 10, 11, 17, 19, 26, 32, 41, 43, 53, 74, 103, 107, 116, 142, 158, 163, 173, 179, 181, 188, 218, 235, 239, 248, 251, 262, 278, 292, 295, 305, 313, 317, 332, 334, 347, 355, 365, 368, 377, 445, 466]

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 23:29:54 | 显示全部楼层
  1. def fun(mlist):
  2.     t = []
  3.     for x in mlist:
  4.         f = True
  5.         for y in t:
  6.             if x % y == 0:
  7.                 f = False
  8.                 break
  9.         if f:
  10.             t.append(x)
  11.     return t

  12. def main():
  13.     mlist = [3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39,
  14.             41, 42, 43, 45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153,
  15.             158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239,
  16.             248, 250, 251, 253, 258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347,
  17.             355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459,
  18.             466, 474, 476, 477, 489, 494]
  19.    
  20.     t = fun(mlist)
  21.     print(t)

  22. if __name__ == "__main__":
  23.     main()
复制代码


结果:
  1. [3, 7, 10, 11, 17, 19, 26, 32, 41, 43, 53, 74, 103, 107, 116, 142, 158, 163, 173, 179, 181, 188, 218, 235, 239, 248, 251, 262, 278, 292, 295, 305, 313, 317, 332, 334, 347, 355, 365, 368, 377, 445, 466]
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 23:48:01 | 显示全部楼层
想了好久,实在想不出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-13 10:57:02 | 显示全部楼层

RE: Python:每日一题 139

  1. list1 = [3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27,
  2.          28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45, 48, 49, 53, 64, 74,
  3.          78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153,
  4.          158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204,
  5.          207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262,
  6.          265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334,
  7.          347, 355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414,
  8.          417, 426,428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]
  9. list2 = list1 [:]
  10. def sceen ():
  11.     for x in list1 :
  12.         for y in list1[0:list1.index(x)] :
  13.             if x%y == 0 :
  14.                 list2.remove(x)
  15.                 break
  16.     print (list2)  #最终结果
  17.                
  18. sceen()  
复制代码
捕获.PNG

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-13 13:54:55 | 显示全部楼层
本帖最后由 8306最硬 于 2018-1-13 14:00 编辑
  1. def del_multiple(lst):
  2.     for i in lst:
  3.         for j in lst:
  4.             if j % i == 0 and i is not j:
  5.                 lst.remove(j)

  6.     return lst

  7. lst = [3, 7, 10, 11, 17, 19, 26, 32, 39, 41, 43, 48, 53, 74, 103, 107, 116, 142, 158, 163, 173, 179, 181, 188, 216, 218, 235, 239, 248, 251, 262, 278, 292, 295, 305, 313, 317, 332, 334, 347, 355, 365, 368, 377, 417, 445, 466]
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-13 18:15:54 | 显示全部楼层
  1. list1 = [3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45,
  2.          48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171, 173, 174,
  3.          175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262,
  4.          265, 278, 292, 295, 296, 301,305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365, 366, 368, 375,
  5.          377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]
  6. remove1=[]
  7. for i in list1:
  8.     for j in list1:
  9.         if i!=j and i%j==0:
  10.             remove1.append(i)
  11. remove1=list(set(remove1))
  12. for i in remove1:
  13.     list1.remove(i)
  14. print(list1)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-13 22:17:00 | 显示全部楼层
  1. list = [3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]
  2. for i in list:
  3.         for j in list:
  4.                 if j == i:
  5.                         continue
  6.                 if j%i==0:
  7.                         list.remove(j)
  8. for i in list:
  9.         print(i,end=' ')
复制代码

时间复杂度O(n2)
结果如有不对 恳请指正

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-13 23:33:46 | 显示全部楼层
  1. list1 = [3, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 24, 26, 27, 28, 30, 32, 34, 35, 36, 39, 41, 42, 43, 45, 48, 49, 53, 64, 74, 78, 80, 88, 90, 91, 95, 96, 103, 107, 116, 142, 148, 152, 153, 158, 163, 171, 173, 174, 175, 176, 179, 181, 188, 190, 201, 204, 207, 216, 218, 222, 231, 235, 239, 248, 250, 251, 253, 258, 262, 265, 278, 292, 295, 296, 301, 305, 313, 317, 320, 326, 332, 334, 347, 355, 357, 358, 363, 365, 366, 368, 375, 377, 381, 391, 414, 417, 426, 428, 437, 438, 445, 453, 459, 466, 474, 476, 477, 489, 494]

  2. def generator():
  3.     global list1
  4.     while list1:
  5.         temp = list1.pop(0)
  6.         yield temp
  7.         list1 = [x for x in list1 if x % temp != 0]

  8. g = generator()
  9. print([x for x in g])
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 16:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表