您的位置:首页 > 编程语言 > Python开发

Python元组与列表,集合与字典详解

2019-03-28 22:13 316 查看

一、元组与列表

元组是序列类型中比较特殊的类型,因为它一旦被创建就不能被修改。Python中元组采用逗号和圆括号来表示。
序列类型

操作符 描述
x in s 如果x是s的元素,返回True,否则返回False
x not in s 如果x是s的元素,返回True,否则返回False
s + t 连接s和t
s * n 或 n * s 将序列s复制n次
s [ i ] 索引,返回序列的第i个元素
s [ i : j ] 分片,返回包含序列s第i到j个元素的子序列(不包含第j个元素
s [ i : j : k ] 步骤分片,返回包含序列s第i到第j个元素以j为步数的子序列
len(s) 序列s的元素个数(长度)
min(s) 序列s中的最小元素
max(s) 序列s中的最大元素
s.index(x[,i [ ,j ] ]) 序列s中从i开始到j位置中第一次出现元素x的位置
s.count(x) 序列s中出现x的总次数
>>> a = "cat","dog","tiger","human"
>>> a
('cat', 'dog', 'tiger', 'human')

>>> b = ("red",0x001100,"blue",a)
>>> b
('red', 4352, 'blue', ('cat', 'dog', 'tiger', 'human'))

>>> b[2]
'blue'

>>> b[-1][2]
'tiger'

列表方法

方法 说明
list.append(s) 将元素x添加至列表尾部
list.extend(L) 将列表L中所有的元素添加至列表尾部
list.insert(index,x) 在列表指定位置index处添加元素x
list.remove(x) 在列表中删除首次出现的指定元素
list.pop([index]) 删除并返回列表对象指定位置的元素
list.clear() 删除列表中所有元素,但保留列表对象
list.index(x) 返回值为x的首个元素的下标
list.count(x) 返回指定元素x在列表中的出现次数
list.revrse() 对列表元素进行原地倒序
list.sort() 对列表元素进行原地排序(升序、降序)
list.copy() 返回列表对象的浅拷贝

注意:除了list.copy()以外,其他的都不会产生新的列表,也不会改变列表的ID

列表推导式
[ 新元素表达式 or 临时变量 in 可迭代对象 if 条件表达式 ]

>>> multiples = [i for i in range(30) if i % 3 is 0]
>>> print(multiples)
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

>>>[x*x for x in range(6)  if x % 2 == 0]
[0,4,16]

>>> x = [3,5,3,7]
>>> [x.index(i) for i in x if i == 3]
[0, 0]

二、集合与字典

  • 集合数据类型是没有顺序的简单对象的聚集,且集合中元素不重复
  • Python集合数据类型包括可变集合对象(set)和不可变集合对象(frozenset)
  • 集合的定义{x1,[x2,…,xn]}
  • {}表示空的字典,因为字典也用花括号定义,空集为set()
  • 集合中元素不可重复,元素类型只能是固定数据类型,例如:整数、浮点数、字符串、元组等,列表、字典和集合类型本身都是可变数据类型,不能作为集合的元素出现。

例:创建集合对象示例

>>> {1,2,1}
{1, 2}
>>> {1,'a',True}
{1, 'a'}
>>> {1.2,True}
{1.2, True}
>>> set()
set()
>>> set('Hello')
{'o', 'H', 'e', 'l'}

例:集合中元素的判断示例

>>> s = set('Hello')
>>> 'h' in s
False
>>> 'o' not in s
False

由于集合元素独一无二,使用集合类型能够过滤掉重复元素,set(x)函数可以用于生成集合

>>> w = set('apple')
>>> w
{'e', 'a', 'p', 'l'}

>>> v = set(("cat","dog","tiger","human"))
>>> v
{'cat', 'tiger', 'human', 'dog'}

集合类型有10个操作符

操作符 描述
S - T或S.difference(T) 返回一个新集合,包括在集合S中但不在集合T中的元素
S -= T或S.difference_update(T) 更新集合S,包括在集合S中但不在集合T中的元素
S & T或S.intersection(T) 返回一个新集合,包括同时在集合S和T中的元素
S =& T或S.intersection_update(T) 更新集合S,包括同时在集合S和T中的元素
S ^ T或s.symmetric_difference(T) 返回一个新集合,包括集合S和T中的元素,但不包括同时在其中的元素
S ^ =T或s.symmetric_difference_update(T) 更新集合S,包括集合S和T中的元素,但不包括同时在其中的元素
S | T或S.union(T) 返回一个新集合,包括S和T中的所有元素
S |= T或S.update(T) 更新集合S,包括S和T中的所有元素
S <= T或S.issubset(T) 如果S与T相同或S是T的子集,返回True,否则返回False,可用S<T判断S是否是T的真子集
S >= T或S.issuperset(T) 如果S与T相同或S是T的超集,返回True,否则返回False,可用S>T判断S是否是T的真超集

上述操作符表达了集合类型的4种基本操作,交集(&)、并集( | )、差集( - )、补集( ^ ),操作逻辑与数学定义相同

例:集合的运算示例

>>> s1 = {1,2,3}
>>> s2 = {2,3,4}
>>> s1|s2
{1, 2, 3, 4}
>>> s1&s2
{2, 3}
>>> s1.intersection(s2)
{2, 3}

集合类型有10个操作函数或方法

函数或方法 描述
S.add(x) 如果数据项x不在集合s中
S.clear(x) 移除S中所有数据项
S.copy() 返回集合S的一个拷贝
S.pop() 随机返回集合S中的一个元素,如果S为空,产生KeyError异常
S.discard(x) 如果x在集合S中,移除该元素,如果x不在不报错
S.remove(x) 如果x在集合S中,移除该元素,不在产生KeyError异常
S.isdisjoint(T) 如果集合S与T没有相同元素,返回True
len(S) 返回集合S元素个数
x in S 如果x是S的元素,返回True,否则返回False
x not in S 如果x不是S的元素,返回True,否则返回False

字典类型未完待续。。。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: