01 python基础 列表 元组 集合

Python列表与集合详解
本文详细介绍了Python中列表的方法及应用,包括值比较、对象比较、内置方法等,并深入探讨了集合的特点及其常用操作,如添加、删除元素及集合运算。

python 系列均为笔记。都是转载!!!!!!!!!!!!!!!!!!!

比较

== 值比较
is 对象比较

列表的内置方法

下图中的方法是列表专有的内置方法,请熟记于心。

方法                  作用
append(obj)         在列表末尾添加新的对象
count(obj)          统计某个元素在列表中出现的次数
extend(seq)         在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
index(obj)          从列表中找出某个值第一个匹配项的索引位置
insert(index, obj)  将对象插入列表
pop(obj=list[-1])   移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
remove(obj)         移除列表中某个值的第一个匹配项
reverse()           反向列表中元素
sort([func])        对原列表进行排序
copy()              复制列表
clear()             清空列表,等于del lis[:]
注意:其中的类似 append,insert, remove ,reverse, pop或 sort 等方法会修改列表本身,
并且没有返回值(严格的说是返回None)。

列表当做堆栈
出栈 pop()
入栈 append()

元组

元组只保证它的一级子元素不可变,对于嵌套的元素内部,不保证不可变!

集合

set集合是一个无序, 不重复 元素的集
集合使用大括号({})框定元素,并以逗号进行分隔。但是注意:如果要创建一个空集合,必须用 set() 而不是 {} ,因为后者创建的是一个空字典。
集合除了在形式上最外层用的也是花括号外,其它的和字典没有关系。
集合数据类型的核心在于自动去重。很多时候,这能给你省不少事。

>>> s = set([1,1,2,3,3,4])
>>> s
{1, 2, 3, 4}                    # 自动去重
>>> set("it is a nice day")     # 对于字符串,集合会把它一个一个拆开,然后去重
{'s', 'e', 'y', 't', 'c', 'n', ' ', 'd', 'i', 'a'}

add:
通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:

>>> s = {1, 2, 3, 4}
>>> s
{1, 2, 3, 4}
>>> s.add(5)
>>> s
{1, 2, 3, 4, 5}
>>> s.add(5)
>>> s
{1, 2, 3, 4, 5}

update:
可以通过update()方法,将另一个对象更新到已有的集合中,这一过程同样会进行去重。

>>> s
{1, 2, 3, 4, 5}
>>> s.update("hello")
>>> s
{1, 2, 3, 4, 5, 'e', 'o', 'l', 'h'}

remove:
通过remove(key)方法删除指定元素,或者使用pop()方法。注意,集合的pop方法无法设置参数,删除指定的元素:

>>> s
{1, 2, 3, 4, 5, 'e', 'o', 'l', 'h'}
>>> s.remove("l")
>>> s
{1, 2, 3, 4, 5, 'e', 'o', 'h'}
>>> s.pop()
1
>>> s
{2, 3, 4, 5, 'e', 'o', 'h'}
>>> s.pop(3)
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    s.pop(3)
TypeError: pop() takes no arguments (1 given)

集合既不支持下标索引也不支持字典那样的通过键获取值。

>>> dir(set)
['__and__', '__class__', '__contains__', '__delattr__', 
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', 
'__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', 
'__init_subclass__', '__ior__', '__isub__', '__iter__', 
'__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', 
'__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', 
'__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', 
'__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 
'clear', 'copy', 'difference', 'difference_update', 'discard', 
'intersection', 'intersection_update', 'isdisjoint', 'issubset', 
'issuperset', 'pop', 'remove', 'symmetric_difference', 
'symmetric_difference_update', 'union', 'update']

除了add、clear、copy、pop、remove、update等集合常规操作,剩下的全是数学意义上的集合操作,交并差等等。

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # 删除重复的
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # 检测成员
True
>>> 'crabgrass' in basket
False
>>> # 以下演示了两个集合的交、并、差操作
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # a 中唯一的字母
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # 在 a 中的字母,但不在 b 中
{'r', 'd', 'b'}
>>> a | b                              # 在 a 或 b 中的字母
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # 在 a 和 b 中都有的字母
{'a', 'c'}
>>> a ^ b                              # 在 a 或 b 中的字母,但不同时在 a 和 b 中
{'r', 'd', 'b', 'm', 'z', 'l'}

集合数据类型属于Python内置的数据类型,但不被重视,在很多书籍中甚至都看不到一点介绍。其实,集合是一种非常有用的数据结构,它的去重和集合运算是其它内置类型都不具备的功能,在很多场合有着非常重要的作用,比如网络爬虫。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值