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 "", 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 "", 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 S x 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() 随机取出一组键值对,以元祖类型返回

你可能感兴趣的:(Python,学习笔记)