Python 中的 集合 与 序列[列表,元祖]

python语言所有的变量名都是类似于C语言中的指针,所以简单的赋值语句A=B 只是让A和B指向了同一个内存地址,指向了同一个元素。所以在python语言中,任意变量名可以随时赋值为任意其他类型的元素;集合序列也可以包含不同数据类型的元素。(因为实质上集合序列保存的都是指针,指针指向的元素才是不同的类型)

A.集合

构造集合

集合中的元素是无序的、不能重复的、不可修改的,只允许添加元素或减少元素。

>>> A= {"python",123,("python",123),123,'1','2','3'}#使用#定义集合
>>> A    #输出是可以看到重复的元素  数字123  只留下了一个,切输出顺序由系统内部规定,并不一定和初始化的顺序相关联。
{'1', ('python', 123), '3', '2', 123, 'python'}
>>> B=set("pypy123")#使用set导入一个序列元素来生成集合
>>> B   #将序列导入生成集合可以快捷完成元素去重,但元素顺序与序列无关
{'1', '2', 'y', 'p', '3'}
>>>>>> D=B.copy()  #返回集合的副本,简单的D=C只是将D指向C,只有重新构造才能产生两个内容相同的不同变量 这是Python语言特性,Python语言的变量名等同于C语言的指针,赋值的时候只是把指针指向同样的内存地址,所以要产生两个不相关的元素,必须重新构造。
>>> D
{'1', '2', 'y', 'p', '3'}
运算、操作符和属性方法
>>> A | B   #并集
{'1', '2', 'y', 'p', ('python', 123), '3', 123, 'python'}
>>> A - B   #差集
{123, 'python', ('python', 123)}
>>> A & B   #交集
{'1', '2', '3'}
>>> A ^ B   #补集
{'p', 'python', ('python', 123), 123, 'y'}
>>> C >=B   # > >= < <= 返回是否为子集的判断结果
False
>>> C <=B
True
>>> C <B
True
>>> B >C
True
>>> #一些为集合的方法
>>> B.add('a')   #增加元素
>>> B
{'1', '2', 'y', 'p', 'a', '3'}
>>> B. discard('1')  #删除指定元素,如果该元素不存在,不产生异常
>>> B
{'2', 'y', 'p', 'a', '3'}
>>> B. discard('1')
>>> B
{'2', 'y', 'p', 'a', '3'}
>>> B.remove('2')  #删除指定元素,如果该元素不存在,产生KeyError异常
>>> B
{'y', 'p', 'a', '3'}
>>> B.remove('2')
Traceback (most recent call last):
  File "<pyshell#25>", line 1, in <module>
    B.remove('2')
KeyError: '2'
>>>
>>> B.pop()  #从集合中随机取出一个元素并将其从集合中删除(伪随机),如果集合为空,产生KeyError异常
'y'
>>> B
{'p', 'a', '3'}
>>> B.clear()  #清空集合
>>> B
set()
>>> B.pop()
Traceback (most recent call last):
  File "<pyshell#30>", line 1, in <module>
    B.pop()
KeyError: 'pop from an empty set'
>>> len(D)   #返回集合元素个数
5
>>> '1' in D  #返回布尔值
True
>>> '1' not in D     #返回布尔值
False

B.序列

序列是有顺序的组合类型,所以允许有相同元素在不同次序共通存在。
序列类型是Python的基类类型,元祖类型、列表列表、字符串类型都是序列类型的衍生。序列类型的运算操作方法广泛适用与元祖、列表、字符串

运算、操作符和属性方法
操作符描述
x in S判断序列S是否包含元素x
x not in Sx in S 的值取反
S+T连接序列S和T
Sn 或 nS序列S重复n次
S[i]返回S序列中第i个元素
S[i:j:k]返回S的切片,区间包括i,不包括j,步长为k
属性和方法描述
len(S)返回序列S的元素个数
min(S),max(S)返回序列中最小、最大的元素(如果序列内元素不可比较,此函数会产生异常报错)
S.index(x)或S.index(x,i,j)返回序列(或切片[i,j) )中第一次出现元素x的位置
S.count(x)返回序列S中出现元素x的总次数
1.元祖
构造元祖
>>> A = 1,2,3     #元祖既可以用小括号,也可以不用小括号
>>> A
(1, 2, 3)
>>> B=("Hello",0x001100,A)   #
>>> B
('Hello', 4352, (1, 2, 3))
>>> C=tuple("HELLO")  #tuple只能接受一个集合或者序列类型,不能接收多个变量
>>> C
('H', 'E', 'L', 'L', 'O')
>>> 
运算、操作符和属性方法

元祖的运算操作符属性方法继承自“序列”,且没有扩展出来的其他方法

2.列表
构造列表
>>> A=['cat','dog','tiger',1024]
>>> A
['cat', 'dog', 'tiger', 1024]
>>> B=A      
>>> B
['cat', 'dog', 'tiger', 1024]
>>> B[1]='python'
>>> A
['cat', 'python', 'tiger', 1024]
>>> B
['cat', 'python', 'tiger', 1024]
>>> C=list("Hello")
>>> C
['H', 'e', 'l', 'l', 'o']
>>> 
运算、操作符和属性方法
操作符描述
ls[i:j]=lt用lt替换[i:j)区间
del ls[i]删除指定下标所在元素
del ls[i:j:k]以步长k删除指定元素
>>> ls=list("0123456789")
>>> ls
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> ls[9:]=list("9ABCDEF")  #使用新列表替换ls[9:]
>>> _
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
>>> del ls[15]    #删除指定元素
>>> _
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E']
>>> del ls[::3]    #以指定步长删除元素
>>> _
['1', '2', '4', '5', '7', '8', 'A', 'B', 'D', 'E']
属性和方法描述
ls.append(x)列表最后增加元素x
ls.copy返回列表的副本
ls.clear()清空列表
ls.insert(i,x)在列表指定位置插入元素
ls.pop(i)返回列表中第i个元素,并从列表中删除它
ls.remove(x)删除列表中第一个找到的元素x,并删除它
ls.reverse()列表反转
3.字符串
构造字符串

C.字典类型

构造字典
>>> d = {"中国":"北京","美国":"华盛顿","法国":"巴黎"}
>>> d
{'中国': '北京', '美国': '华盛顿', '法国': '巴黎'}
>>> d['中国']
'北京'
>>> Empty = {}     #空大括号生成空字典而不是空集合
>>> type(Empty)
<class 'dict'>
运算、操作符和属性方法
函数和方法描述
len(d)返回字典大小
d.clear()清空字典
del d[k]删除键k对应的键值对
k in d判断是否存在键为k的键值对
d.keys()返回所有键信息
d.values()返回所有值信息
d.items()返回所有键值对
d.get(k,)返回k对应键值,如果没有k,返回值
d.pop(k,)相当于d.get(k,)+del d[k]
d.popitem()随机取出一组键值对,以元祖类型返回
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值