1
ca1n 2015-06-28 01:18:24 +08:00
。。。去重复
|
2
xupefei 2015-06-28 01:18:38 +08:00
>foreach x in mList
> if(!cleanlist.contains(x)) > cleanlist.add(x) 就这样喽。 |
3
xupefei 2015-06-28 01:20:21 +08:00
|
4
yzyzsun 2015-06-28 01:27:40 +08:00 via iPhone
顺便问下 Python 有类似于 array.uniq! 的方法吗?
|
5
plantparknet OP @xupefei 没看明白,首先cleanlist为空,如何实现查询myList中的重复呢?
|
6
plantparknet OP @ca1n 知道这段代码实现的是去重,但不理解为何如此写,x应该为myList中的数值,如何实现查询重复的
|
7
xupefei 2015-06-28 01:46:02 +08:00
@plantparknet
第一步: cleanlist=[],x=1,cleanlist中包含x吗,不包含,把x添加到cleanlist中 第二步,cleanlist=[1],x=2,cleanlist中包含x吗,不包含,把x添加到cleanlist中 第三步,cleanlist=[1, 2],x=3,cleanlist中包含x吗,不包含,把x添加到cleanlist中 第四步,cleanlist=[1, 2, 3],x=1,cleanlist中包含x吗,包含,什么也不做 第五步,cleanlist=[1, 2, 3],x=2,cleanlist中包含x吗,包含,什么也不做 第六步,cleanlist=[1, 2, 3],x=5,cleanlist中包含x吗,不包含,把x添加到cleanlist中 第七步,cleanlist=[1, 2, 3, 5],…………………………………… |
8
plantparknet OP @xupefei 十分感谢~~ 这么详细~~ 感激涕流啊~~
|
9
gaotongfei 2015-06-28 02:57:11 +08:00 via iPhone
@yzyzsun set
|
11
rrkelee 2015-06-28 07:39:09 +08:00
|
13
cc7756789 2015-06-28 10:19:46 +08:00
这是列表生成式( List Comprehension ),用于简化多行 if 结构的语句,生产一个list,然后去掉重复的元素,把他写成常规语句就是:
```python mylist = [1,1,2,2,3,4] tolist = [] for n in mylist: if n not in tolist: tolist.append(n) ``` 还有一个可用 set 去重复元素的更简单方法。 ```python >>> a = set([1,1,2,2,3,4]) >>> a set([1, 2, 3, 4]) >>> list(a) [1, 2, 3, 4] ``` Python还有一个生成器(Generator),其就等于函数使用yield进行return,只需要把 `[]` 括号变成 `()` 括号: ```python >>> a = (x for x in range(10)) >>> a <generator object <genexpr> at 0x7f7c1ebfd050> >>> for x in a: ... print x ... 0 1 2 3 4 5 6 7 8 9 >>> #和下面相同 >>> def a(): ... for x in range(10): ... yield x >>> a() <generator object a at 0x7f7c1ebfde10> >>> for x in a(): ... print x ... 0 1 2 3 4 5 6 7 8 9 ``` 这样不会立即生成list,而是生成一个generator对象,需要用的时候再进行取值,可以节省大量内存。 你也可以利用 generator 拥有的 `next()` 方法取值。(注意:如果你取出,值就被弹出不存在了,除非你再次启动Python解释器) ```python >>> a = (x for x in range(10)) >>> a.next() 0 >>> a.next() 1 >>> a.next() 2 ``` 附:一直不知道为什么要叫List Comprehension,Comprehension意为 **理解;包含**,知道的也可以告诉我原因啊。 |
14
cc7756789 2015-06-28 10:28:21 +08:00
@cc7756789 补充:还有一种去重复的方法:
>>> {}.fromkeys([1,1,1,1,3]) {1: None, 3: None} >>> {}.fromkeys([1,1,1,1,3]).keys() [1, 3] |
15
aec4d 2015-06-28 12:35:19 +08:00
@cc7756789 列表推导式 还不是翻译过来的 主要是便于理解嘛 http://encyclopedia.thefreedictionary.com/List+comprehension#History
|