元组与列表
Python的序列类型包括字符、列表与元组等。
所有序列都支持迭代。
序列表示索引为非负整数的有序对象集合。
字符和元组属于不可变序列,列表可变。数据类型的可变与不可变将在下一篇博客中为大家介绍。
序列类型有12个通用的操作符和函数
操作符
描述
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[j]
索引,返回序列的第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的总次数
元组
元组(tuple)是最常用的Python序列类型,且一旦创建就不能被修改,元组类型在表达固定数据项、函数多返回值、多变量同步赋值、循环遍历等情况下十分有用。
Python中元组采用逗号和圆括号(可选)来表示。
tuple的定义与索引:
tuple()函数的使用方法:
>>> tuple([1,2,3,4])
(1, 2, 3, 4)
>>> tuple({1:2,6:8}) #针对字典 会返回字典的key组成的tuple
(1, 6)
>>> tuple((1,2,3,4)) #元组会返回元组自身
(1, 2, 3, 4)
列表
列表(list)都可以进行的操作包括增,删,减,查,索引,切片。列表的数据项不需要具有相同的类型。
# 列表(list)
#每个元素可变,元素有序且对应每个位置,可容纳任何对象
this_is_a_list = [1,'Hello world',print(1),True,[1,2]]
this_is_a_list[0]
this_is_a_list[3]
this_is_a_list[-1]
this_is_a_list[-4]
# 列表的增删改查
####增
names = ['xiaohong','xiaoming','xiaozhang']
names.insert('a') # 报错,需要指定位置
names.insert(1,'xiaoli') #在指定位置增加元素
names.insert(-1,'xiaowei')
####删
names.remove('xiaowei')
names.remove(names[-2])
del names[-2]
####
names.append('xiaohong') # 在列表末尾添加新对象
names.extend(this_is_a_list) # 在列表末尾追加另一个列表
names.count('xiaohong') # 计数
names.index('xiaohong') #从列表中找出某个值第一个匹配项的索引位置
####查
names[1]
names[3:] #看后面几个
names[:3] # 看前面几个
names[1:3] #指定几个
# 列表推导式
aa = [i for i in range(1,11)]
a = []
for i in range(1,11):
a.append(i) # for循环
print(a)
aaa = [i**2 for i in range(1,11)]
aaaa = []
for i in range(1,11):
i **=2 # for循环
aaaa.append(i)
print(aaaa)
使用
介绍
list.append(x)
将元素x添加至列表尾部
list.extend(L)
将列表L中所有元素添加至列表尾部
list.insert(index,x)
在列表指定位置index处添加元素x
list.remove(x)
在列表中删除首次出现的制定元素
list.popp([index])
删除并返回列表对象指定位置的元素
list.clear()
删除列表中所有元素,但保留列表对象
list.index(x)
返回值为x的首个元素的下标
list.count(x)
返回指定元素x在列表中的出现次数
list.reverse()
对列表元素进行原地倒序
list.sort()
对列表元素进行原地排序(升序、降序)
list.copy()
返回列表对象的浅拷贝
除list.copy()外,列表方法均不会改变列表的id,也不会新建列表。
集合与字典
集合
集合数据类型是没有顺序的简单对象的聚集。且集合中元素不重复,只能是固定数据类型,例如:整数、浮点数、字符串、元组等,列表、字典和集合类型本身都是可变数据类型,不能作为集合的元素出现。
Python集合数据类型包括可变集合对象(set)和不可变集合对象(frozenset)
集合的定义:{a,[b,...,n]}
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
1、创建集合对象示例:
>>>{1,2,1}
{1,2}
>>>{1,'a',True}
{True,'a'}
>>>{1,True}
{True,1}
>>>set()
set()
>>>set('Hello')
>{'H','e','o','l'}
集合元素是无序的,集合的打印效果与定义顺序可以不一致。使用集合类型能够过滤掉重复元素。
2、集合操作符
集合类型有10个操作符。
操作符
方法
S │T
返回一个新集合,包括在集合S和T中的所有元素
S - T
返回一个新集合,包括在集合S但不在T中的元素
S & T
返回一个新集合,包括同时在集合S和T中的元素
S ^ T
返回一个新集合,包括集合S和T中的非相同元素
S <= T 或 S < T
返回True/False,判断S和T的子集关系
S >= T 或 S > T
返回True/False,判断S和T的包含关系
S │= T
更新集合S,包括在集合S和T中的所有元素
S -= T
更新集合S,包括在集合S但不在T中的元素
S &= T
更新集合S,包括同时在集合S和T中的元素
S ^= T
更新集合S,包括集合S和T中的非相同元素>>>s1 = {1,2,3}
>>>s2 = {2,3,4}
>>> s1|s2
{1,2,3,4}
>>> s1&s2
{2,3}
>>> s1 - s2
{1}
>>> s1 ^ s2
{1,4}
>>> s1.union(s2)
{1,2,3,4}
>>> s1.intersection(s2)
{2,3}
>>> s1.difference(s2)
{1}
>>> s1.symmetric_difference(s2)
{1,4}
3、集合操作函数与方法
操作函数
方法
S.add(x)
如果x不在集合S中,将x增加到S
S.discard(x)
移除S中元素x,如果x不在集合S中,不报错
S.remove(x)
移除S中元素x,如果x不在集合S中,产生KeyError异常
S.clear()
移除S中所有元素
S.pop()
随机返回S的一个元素,更新S,若S为空产生KeyError异常
S.copy()
返回集合S的一个副本
len(S)
返回集合S的元素个数
x in S
判断S中元素x, x在集合S中,返回True,否则返回False
x not in S
判断S中元素x, x不在集合S中,返回False,否则返回True
set(x)
将其他类型变量x转变为集合类型
集合的长度、最大值、最小值、元素和
通过内置函len()、max()、min()、sum(),可以获得集合的长度、元素最大值、元素最小值、元素之和
集合类型主要用于三个场景:成员关系测试、元素去重和删除数据项。
4、映射类型
映射类型是“键-值”数据项的组合,每个元素是一个键值对,即元素是(key,value),元素之间是无序的。键值对(key,value)是一种二元关系。在Python中,映射类型主要以字典(dict)体现。
字典
通过任意键信息查找一组数据中值信息的过程叫映射,Python语言中通过字典实现映射。Python语言中的字典可以通过大括号建立,建立模式:{:,:,...:}
键和值通过冒号连接,不同键值对通过逗号隔开。
字典(dict)是一组键/值对的数据结构。每个键对应于一个值。在字典中,键不能重复。根据键可以查询到值。
字典的键只能使用不可变的对象,但字典的值可以使用不可变或可变的对象。
1、创建字典对象示例:
>>>{}
{}
>>>{'a':'apple','b':'boy'}
{'a':'apple','b':'boy'}
>>>dict()
{}
>>>dict({'a':'apple','b':'boy'})
{'a':'apple','b':'boy'}
字典打印出来的顺序与创建之初的顺序不同,这不是错误。字典是集合类型的延续,各个元素并没有顺序之分。
字典最主要的用法是查找与特定建相对应的值,这通过索引符号来实现。
>>>Dcountry["中国"]
'北京'
字典中键值对的访问模式:
= []
2、字典类型的操作:
通过中括号可以增加新的元素:
直接使用大括号({})可以创建一个空的字典,并通过中括号([])向其增加元素。
3、字典操作函数与方法
操作函数
方法
radiansdict.clear()
删除字典内所有元素
radiansdict.copy()
返回一个字典的浅复制
radiansdict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
radiansdict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值
radiansdict.has_key(key)
如果键在字典dict里返回true,否则返回false
radiansdict.items()
以列表返回可遍历的(键, 值) 元组数组
radiansdict.keys()
以列表返回一个字典所有的键
radiansdict.setdefault(key, default=None)
和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default
radiansdict.update(dict2)
把字典dict2的键/值对更新到dict里
radiansdict.values()
以列表返回字典中的所有值