鱼C论坛

 找回密码
 立即注册
查看: 13068|回复: 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 编辑
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]

# 方法1:

length = len(list1)
result = [list1[0]]
for index in range(1, length):
    for i in list1[:index]:
        if list1[index] % i == 0:
            break
    else:
        result.append(list1[index])
print(result)

# 方法2:
for i in list1[1:]:
    for j in list1[:list1.index(i)]:
        if i % j == 0:
            list1.remove(i)
            break
print(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]

#  list1 = list(range(3,10000))时,方法1耗时2.84秒,方法2耗时0.98秒。
#  list1 = list(range(3,50000))时,方法1耗时59.98秒,方法2耗时17.06秒。
#  list1 = list(range(3,100000))时,方法1耗时272.97秒,方法2耗时70.5 秒。
#  我好有耐心呀。

点评

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

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-1-12 15:38:00 | 显示全部楼层
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]
number = len(list1)
answer = []
def prime(a):
    for i in range(2,a):
        if a % i == 0:
            return False
    return True

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

使用道具 举报

发表于 2018-1-12 15:52:14 | 显示全部楼层
本帖最后由 jerryxjr1220 于 2018-1-12 17:23 编辑
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]
from functools import reduce
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]

再写个标记法:效率第一
def func(lst):
        import numpy as np 
        num = np.zeros(max(lst)+1,dtype='int8')
        for i in reversed(lst):
                num[i] = 1
                num[i+i::i] = 0
        return np.nonzero(num)[0].tolist()
这个方法用来筛选质数,效率也是非常高的。
list1 = list(range(2,100000))
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 | 显示全部楼层
def delete_element(old_list):
        new_list = old_list[:]
        for i in new_list:
                for j in new_list:
                        if (i%j == 0) and (i!=j):
                                old_list.remove(i)
                                break        ####
        return old_list
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]
out = delete_element(list1)
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 | 显示全部楼层
直接算出所有倍数,然后用差集处理
def fun(lst):
    result = set(lst)
    for num in lst:
        multiple = {num * i for i in range(2, lst[-1]//num + 1)}
        result -= multiple
    return sorted(result)
求余处理
def fun2(lst):
    result = lst[:]
    for i in lst:
        for j in lst[lst.index(i)+1:]:
            if not j%i and j in result:
                result.remove(j)
    return result

评分

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

查看全部评分

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

使用道具 举报

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



if __name__ == '__main__':
    
    ls = [
        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
    ]
    print(remove_multiple(ls))
    
结果:[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 | 显示全部楼层
def fun(mlist):
    t = []
    for x in mlist:
        f = True
        for y in t:
            if x % y == 0:
                f = False
                break
        if f:
            t.append(x)
    return t

def main():
    mlist = [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]
    
    t = fun(mlist)
    print(t)

if __name__ == "__main__":
    main()

结果:
[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

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 = list1 [:]
def sceen ():
    for x in list1 :
        for y in list1[0:list1.index(x)] :
            if x%y == 0 :
                list2.remove(x)
                break
    print (list2)  #最终结果
                
sceen()  
捕获.PNG

评分

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

查看全部评分

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

使用道具 举报

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

    return lst

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 | 显示全部楼层
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]
remove1=[]
for i in list1:
    for j in list1:
        if i!=j and i%j==0:
            remove1.append(i)
remove1=list(set(remove1))
for i in remove1:
    list1.remove(i)
print(list1)

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-1-13 22:17:00 | 显示全部楼层
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]
for i in list:
        for j in list:
                if j == i:
                        continue
                if j%i==0:
                        list.remove(j)
for i in list:
        print(i,end=' ')
时间复杂度O(n2)
结果如有不对 恳请指正

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-1-13 23:33:46 | 显示全部楼层
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]

def generator():
    global list1
    while list1:
        temp = list1.pop(0)
        yield temp
        list1 = [x for x in list1 if x % temp != 0]

g = generator()
print([x for x in g])

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 03:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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