python_03

序列是python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推
python有6个序列的内置类型,但最常见的是列表和元组
序列都可以进行的操作包括索引,切片,加,乘,检查成员
此外,python已经内置确定序列的长度以及确定最大和最小的元素的方法

三、列表类型:
List(列表) 是 python 中使用最频繁的数据类型
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)
列表是写在方括号 [ ] 之间、用逗号分隔开的元素列表
注意列表不要求数据类型一致:list = ['Google', 'Runoob', 1997, 2000];
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表
列表截取的语法格式 同字符串 如:变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。
与Python字符串不一样的是,列表中的元素是可以改变的:
>>>a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = [] # 将对应的元素值设置为 []
>>> a
[9, 2, 6]

注意:
1、List写在方括号之间,元素用逗号隔开
2、和字符串一样,list可以被索引和切片
3、List可以使用+操作符进行拼接
4、List中的元素是可以改变的

列表操作:
name = ['name1','name2','name3','name4']
print[0]
print[1:3] 从前面开始,到后面的前一个结束
print[0:-1:2] 步长为2的切片
name.append('name5') 最后插入新值
name.insert(0,'name0') 指定位置插入
name[0] = 'new_name1' 修改指定位置的内容
name.remove('name3') 制定内容删除
pop_name = name.pop(1) 将指定位置弹出并可保存在pop_name中
name.index('name1') 返回name1在列表中的位置
name.count('name1') 返回name1在列表中的数量
name.reverse() 反转列表的顺序,永久保存
name.sort() 按ACSⅡ对列表元素进行排序
name.extend(age) 将列表name和列表age合并
for i in name:
print(i)
len(name) 获取列表等的长度,返回数字

python列表脚本操作符:
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表
如下所示:
len([1, 2, 3]) 3 长度
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 组合
['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重复
3 in [1, 2, 3] True 元素是否存在于列表中
for x in [1, 2, 3]: print(x, end=" ") 1 2 3 迭代

嵌套列表
使用嵌套列表即在列表里创建其它列表,如:
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b'


四、元组类型:
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开
元组中的元素类型也可以不相同:
tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2 )
元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取
其实,可以把字符串看作一种特殊的元组

虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表
构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号

注意:
1、与字符串一样,元组的元素不能修改
2、元组也可以被索引和切片,方法一样
3、注意构造包含0或1个元素的元组的特殊语法规则
4、元组也可以使用+操作符进行拼接

元组操作:
name = ('name1','name2','name3','name4')
name.index('name1')
name.count('name1') 只有这两种操作
删除元组
元组中的元素值是不允许删除的,但可使用del语句来删除整个元组,如:
tup = ('Google', 'Runoob', 1997, 2000)
del tup; 注意,这相当于失去了定义,会报错

元组运算符
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组
Python 表达式 结果 描述
len((1, 2, 3)) 3 计算元素个数
(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 连接
('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 复制
3 in (1, 2, 3) True 元素是否存在
for x in (1, 2, 3): print (x,) 1 2 3 迭代


五、集合类型:
集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员
基本功能是 进行成员关系测试 和 删除重复元素
可以使用大括号 { } 或者 set() 函数创建集合
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}

集合操作:
是一个无序的,没有重复元素的数据组合,主要用于去重,和关系测试。常用操作:
list = [1,4,5,7,2,6,3,7,3,4]
jihe = set(list) 转换为集合
jihe1.intersection(jihe2) 求交集
jihe1.union(jihe2) 求并集
jihe1.difference(jihe2) 求差集,即集合1中有而集合2中没有的
jihe1.issubset(jihe2) 判断集合1是否是集合2的子集
jihe1.isdisjoint(jihe2) 判断集合1和集合2是否有交集,返回true或false
jihe1.add(999) 添加新项目,若存在则不进行操作
jihe1.remove('H') 删除数据,不存在会发生错误
jihe1.discard('H') 删除数据,不存在也不会发生错误
x in jihe1 判断是否在集合里,其实列表,字符串等都是这么写来判断是否在里面

类似列表推导式,同样集合支持集合推导式(Set comprehension):
>>>a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}


六、字典类型:
字典(dictionary)是python中另一个非常有用的内置数据类型
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取
字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合
键(key)必须使用不可变类型
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
在同一个字典中,键(key)必须是唯一的,天生去重
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}

构造函数 dict() 可以直接从键值对序列中构建字典,如:
>>>dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
{'Taobao': 3, 'Runoob': 1, 'Google': 2}
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>> dict(Runoob=1, Google=2, Taobao=3)
{'Taobao': 3, 'Runoob': 1, 'Google': 2}

注意:
1、字典是一种映射类型,它的元素是键值对
2、字典的关键字必须为不可变类型,且不能重复
3、创建空字典使用 { }

字典操作:
info = {
'name1':'new_name1'
'name2':'new_name2'
}
print(info['name1']) 取出new_name1
info['name1'] = 'old_name1' 如果key在就修改,不在就增添
del info['name1'] 删除,也可以使用pop info.pop('name1')——标准删除
print(info.get('name1')) 查找这个key是否在字典中
'name1' in info 判断这个key是否在字典中并返回true或false
字典嵌套:
name.setdefault('大陆',{'www.baidu.com':[1,2]}) setfault先去字典里查找key值(大陆),找不到再创建
name.update(new_name) 将new_name合并到name中,有重复的key值以new_name为主
dict.fromkeys([6,7,8],'test') 结果为{8:'test',6:'test',7:'test'},可认为是新建一个新的字典
for i in info:
print(i,info[i]) 循环打印key和value
name[name1][name2][name3]

字典内置两个函数:
1、str(dict)
输出字典,以可打印的字符串表示。
>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> str(dict)
"{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"

2、type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型。
>>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
>>> type(dict)
<class 'dict'>

猜你喜欢

转载自www.cnblogs.com/yzgz/p/9714267.html