天天看点

python集合

python集合

特点:去重、关系测试;无序的 ;

功能:增、删、查

应用范围:

    1. python班的同学和运维班的同学   其中有同学两个班都报了, 现在要把两个班的同学合并,不能有重复。(求两个列表的并集)

    2. python班的同学和运维班的同学   其中有同学两个班都报了,现在要把两个班都报的同学取出来。(取两个列表的交集)

<code>#格式:</code>

<code>set_1 </code><code>=</code> <code>{</code><code>1</code><code>, </code><code>2</code><code>, </code><code>3</code><code>, </code><code>4</code><code>, </code><code>5</code><code>, </code><code>6</code><code>}</code>

<code>#例如去重:</code>

<code>list_1 </code><code>=</code> <code>[</code><code>1</code><code>,</code><code>2</code><code>,</code><code>3</code><code>,</code><code>4</code><code>,</code><code>5</code><code>,</code><code>6</code><code>,</code><code>1</code><code>]</code>

<code>list_1 </code><code>=</code> <code>set</code><code>(list_1)            </code><code>#列表转集合</code>

<code>print</code><code>(list_1,</code><code>type</code><code>(list_1))      </code><code>#打印出来的时候已经没有重复的。</code>

<code>输出:{</code><code>1</code><code>, </code><code>2</code><code>, </code><code>3</code><code>, </code><code>4</code><code>, </code><code>5</code><code>, </code><code>6</code><code>} &lt;</code><code>class</code> <code>'set'</code><code>&gt;</code>

集合的所有关系测试

求交集(两个列表都有的)

<code>list_1 </code><code>=</code> <code>set</code><code>(list_1)</code>

<code>list_2 </code><code>=</code> <code>set</code><code>([</code><code>7</code><code>,</code><code>8</code><code>,</code><code>9</code><code>,</code><code>0</code><code>,</code><code>1</code><code>,</code><code>2</code><code>])</code>

<code>print</code><code>(list_1.intersection(list_2))</code>

求并集(两个列表合并)

<code>print</code><code>(list_1.union(list_2))</code>

求差集(A有,B相对于A没有的)

<code>print</code><code>(list_1.difference(list_2))    </code><code>#list_1 里边有的,list_2相对于list_1里边没有的;</code>

<code>print</code><code>(list_2.difference(list_1))    </code><code>#list_2 里边有的,list_1相对于list_2里边没有的;</code>

取子集(两个列表有相同的)

<code>list_3 </code><code>=</code> <code>set</code><code>([</code><code>1</code><code>,</code><code>2</code><code>])</code>

<code>print</code><code>(list_3.issubset(list_1))</code>

求父集(两个列表有相同的)

<code>print</code><code>(list_1.issuperset(list_3))</code>

对称差集(把两个列表里边去掉重复的,其他的都取出来)

<code>print</code><code>(list_1.symmetric_difference(list_2))</code>

判断两个列表有没有交集

<code>list_4 </code><code>=</code> <code>set</code><code>([</code><code>3</code><code>,</code><code>4</code><code>])</code>

<code>print</code><code>(list_3.isdisjoint(list_4))</code>

运算符求所有关系测试

#交集

print(list_1 &amp; list_2)

#并集

print(list_1 | list_2)

#差集

print(list_1 - list_2)

#对称差集

print(list_1 ^ list_2 )

集合基本操作

添加

<code>list_1.add(</code><code>99</code><code>)</code>

<code>print</code><code>(list_1)</code>

添加多项

<code>list_1.update([</code><code>11</code><code>,</code><code>22</code><code>,</code><code>33</code><code>])</code>

删除(一次只能删除一个)删除的元素不存在 会报错;正常删除一个元素返回一个None 。

<code>list_1.remove(</code><code>1</code><code>)</code>

任意删除一个元素,并且返回删除的元素;如果没有返回None 。

<code>print</code><code>(list_1.pop())</code>

指定删除一个元素,如果没有元素也不报错,始终返回值为None;

<code>print</code><code>(list_1.discard(</code><code>1</code><code>))</code>

查看集合长度

<code>print</code><code>(</code><code>len</code><code>(list_1))</code>

x在不在集合里

<code>print</code><code>(</code><code>2</code> <code>in</code> <code>list_1)</code>

x是不是不在集合里

<code>print</code><code>(</code><code>1</code> <code>not</code> <code>in</code> <code>list_1)</code>

本文转自 506554897 51CTO博客,原文链接:http://blog.51cto.com/506554897/1944938