请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生

【每日一坑 2】 去除重复

[复制链接]

2

主题

0

好友

26

积分

新手上路

Rank: 1

发表于 2016-9-8 16:09:09 |显示全部楼层
from random import randint
m=18
n=20
list1=[randint(1,n+1) for i in range(m)]
print list1
list2=[]
for l in range(18):
    list2.append(list1[0])
    list1=[i for i in list1 if i!=list1[0]]
    if bool(list1)==False:
        break
print sorted(list2)

老师,看到很多答案用到set(),这个函数从哪学到的呀?
感觉不用set的话还是if i not in list2这种最简单,我这个就是把if i not in list2复杂化了
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-9-8 19:08:32 |显示全部楼层
pythonnm 发表于 2016-9-8 16:09
from random import randint
m=18
n=20

这个入门课程里没有专门说。
python里的set是集合,它的特点是元素不重复。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

26

积分

新手上路

Rank: 1

发表于 2017-1-20 10:12:40 |显示全部楼层
a = [2,4,1,1,1,1,1,7,3,2,5,4,8,9,7]
a = set(a)
print(a)
回复

使用道具 举报

0

主题

0

好友

10

积分

新手上路

Rank: 1

发表于 2017-1-25 12:18:54 |显示全部楼层
  1. x = [4,7,3,4,1,9,8,3,7]
  2. for i in x:
  3.     c = x.count(i)
  4.     if c > 1:
  5.         x.remove(i)
  6. x.sort()
  7. print (x)
复制代码
回复

使用道具 举报

1

主题

0

好友

45

积分

新手上路

Rank: 1

发表于 2017-3-6 12:02:12 |显示全部楼层
要是只想删掉重复的部分,不排序呢?

试了一下,只用set([4, 7, 3, 4, 1, 9, 8, 3, 7])的话,输出的结果会是set([1, 3, 4, 7, 8, 9]) ?!
虽然是删掉了重复部分,但前面还是set和在括号里面,是怎么回事呢?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2017-3-6 14:44:01 |显示全部楼层
huiwenwu 发表于 2017-3-6 12:02
要是只想删掉重复的部分,不排序呢?

试了一下,只用set([4, 7, 3, 4, 1, 9, 8, 3, 7])的话,输出的结果会 ...

因为这是个set对象。如果要转回list,就写成 list(set(a))
如果你想保留原顺序,那用set直接做不到,得再自己处理
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

45

积分

新手上路

Rank: 1

发表于 2017-3-7 01:11:48 |显示全部楼层
crossin先生 发表于 2017-3-6 14:44
因为这是个set对象。如果要转回list,就写成 list(set(a))
如果你想保留原顺序,那用set直接做不到,得再 ...

thanks!
回复

使用道具 举报

0

主题

0

好友

12

积分

新手上路

Rank: 1

发表于 2017-3-12 18:52:22 |显示全部楼层
  1. a = [4,7,3,4,1,9,8,3,7]
  2. b = list(set(a)).sort()
复制代码
回复

使用道具 举报

0

主题

0

好友

14

积分

新手上路

Rank: 1

发表于 2017-6-7 00:28:56 |显示全部楼层
笨法子来一个,刚入门不知有set 刚学了一些,的确方便。就好像sort排序一样。
lst_1 = [4,7,3,4,1,9,8,3,7]
lst_1.sort()
lst_2 = []
lst_2.append(lst_1[0])
for i in range(1,len(lst_1)):
      if lst_1[i] == lst_1[i-1]:
           continue
      else:
          lst_2.append(lst_1[i])
print lst_2
回复

使用道具 举报

1

主题

0

好友

39

积分

新手上路

Rank: 1

发表于 2017-8-17 19:38:48 |显示全部楼层
# -*-coding:utf-8-*-
# 去除重复元素并且排序
listNum = [-1,100, 6, 7, 7, 3, 5, 42, 3, 4, 5, 45, 45]
dictionary = {}
for i in listNum:
    dictionary[i] = 0
noRepeatList = [key for key in dictionary]
print sorted(noRepeatList)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-3-29 23:01 , Processed in 0.026954 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部