python3学习--3列表与元组

序列是python中基本得数据结构,序列中每个元素都被分配了一个序列号,表示元素得位置,也叫做索引,从0开始,依次类推,也可倒着计数,最后一个元素索引为 -1.


列表 和 元组 是 python两种内建得序列,主要区别在于  列表可以修改,元组不能修改;所以大多数情况下我们使用得是列表,但有些特殊情况下元组更适合,例如 在映射中, 键一般是不能改变得,所以使用元组来存键值;




1.序列的通用操作

1.1声明序列

#单个序列
student = ["zhangsan",20]
seq = ["abc","def","ghj"]

#字符串是以单个字符为元素的序列
strs = "abcde"  

#包含其他序列的序列
somepeople =[["lisi",21],["wangwu",22],["zhaoliu",23]]

>>> student
['zhangsan', 20]
>>> seq
['abc', 'def', 'ghj']
>>> strs
'abcde'
>>> somepeople
[['lisi', 21], ['wangwu', 22], ['zhaoliu', 23]]
>>>
>>> # 空列表 可以用[] 来表示, None 为python的内建值,表示空
>>> #创建 占用10个元素空间的空列表
>>> seq = [None]*10
>>> seq
[None, None, None, None, None, None, None, None, None, None]
>>>

1.2 索引


>>> #通过下标访问
>>> people = ["xiongda","xionger","zhangsan"]
>>> people[0]
'xiongda'
>>> people[-1]
'zhangsan'
>>> people[2]
'zhangsan'

1.3 分片



#分片 : 使用索引访问一定范围内的元素,通过冒号 隔开两个索引
>>> #第一个索引的元素包含在分片内,第二个不包含
>>> number = [1,2,3,4,5,6,7]
>>> number[2:5]
[3, 4, 5]
>>> number[-3:-1]
[5, 6]
>>> #如果第一个索引,比第二个索引晚出现在序列中,分片结果就是一个空序列
>>> number[3:1]
[]
>>> number[-1:-3]
[]
>>> #分片 [a:b] ,  a b的值也可省略,[:b] 从0开始 到b
>>> #[a:]从a开始 到最后; [:] 都省略,表示 遍历所有,可以用于复制序列
>>> 
>>> name = "LiuYuanJu"
>>> name[0:3]
'Liu'
>>> name[3:]
'YuanJu'
>>> name[:3]
'Liu'
>>> name[:]
'LiuYuanJu'
>>> # 步长 : 通常隐式设为 1 ,也可显示设置;
>>> number1 = [1,2,3,4,5,6,7,8,9]
>>> number1[0:10:2]
[1, 3, 5, 7, 9]

1.4 序列运算符



>>> # + 运算符 进行同类型的序列连接,但是并不改变原序列
>>> [1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6]
>>> "hello" + "men"
'hellomen'
>>> [1,2,3] + "hello"
Traceback (most recent call last):
  File "<pyshell#42>", line 1, in <module>
    [1,2,3] + "hello"
TypeError: can only concatenate list (not "str") to list
>>> # * 生成一个新序列,将 原序列重复 n  次
>>> "Ha" * 10
'HaHaHaHaHaHaHaHaHaHa'

1.5 常用内建函数



>>> # len()  返回长度
>>> number3 = [1,2,3,4,5,6]
>>> len(number3)
6
>>> # max()  min() 最大最小值
>>> max(number3)
6
>>> min(number3)
1
>>> >>> # in 检查是否  具有成员资格,即 是否包含
>>> 'w' in "world"
True
>>> "e" in "world"
False
>>> "wor" in "world"
True
>>> somepeople = [["lisi",23],["zhangsan",24]]
>>> ["lisi",23] in somepeople
True
>>>

2. 列表



除了序列的基本操作,列表还有许多改变列表的方法



2.1 基本操作



>>> # list() 可将某种类型的数据转换为 对应的序列, list是一种数据类型
>>> list("hello")
['h', 'e', 'l', 'l', 'o']
>>>
>>> # 1. 改变列表;元素赋值
>>> x = [1,2,3]
>>> x[1] = 0
>>> x
[1, 0, 3]
>>> # 2. 删除元素
>>> people = ["zhangsan","lisi","wangwu"]
>>> del people[2]
>>> name
'LiuYuanJu'
>>> people
['zhangsan', 'lisi']
>>> # 3. 分片赋值
>>> py = list("python")
>>> py
['p', 'y', 't', 'h', 'o', 'n']
>>> py[1:3] = list("om")
>>> py
['p', 'o', 'm', 'h', 'o', 'n']
>>> py[1:] = list("po")
>>> py
['p', 'p', 'o']

2.2 列表方法



>>> # append  列表末尾加入新对象
>>> list1 = [1,2,3]
>>> list1.append(4)
>>> list1
[1, 2, 3, 4]
>>> # count 统计某个元素出现的次数
>>> list1.count(2)
1
>>> # extend 在末尾 一次性追加 另一个序列中的多个值
>>> list2 = [7,8,9]
>>> list1.extend(list2)
>>> list1
[1, 2, 3, 4, 7, 8, 9]
>>> # index 返回与某个值匹配的第一个索引位置
>>> list1.index(3)
2
>>> # insert 向列表中插入对象
>>> list1.insert(1,"first")
>>> list1
[1, 'first', 2, 3, 4, 7, 8, 9]
>>> # pop 移除列表最后一个元素, 并返回该元素的值
>>> list1.pop()
9
>>> # remove 移除某个值的 第一个  匹配项
>>> list1.remove("first")
>>> list1
[1, 2, 3, 4, 7, 8]
>>> # reverse 将列表元素 倒序
>>> list1.reverse()
>>> list1
[8, 7, 4, 3, 2, 1]

>>> # sort 在列表原位置 进行排序, 改变了原来的列表
>>> list1.sort()
>>> list1
[1, 2, 3, 4, 7, 8]
>>> # sorted 返回一个列表排序后的 副本列表
>>> list2 = sorted(list1)
>>> list2
[1, 2, 3, 4, 7, 8]
>>>

3. 元组



元组不能修改,用()括起来。用 逗号 隔开一些值,就自动创建的元组, 如果只有一个值,也必须加上逗号






>>> #元组
>>> 1,2,3
(1, 2, 3)
>>> 5,
(5,)
>>> 
>>> #tuple 将一个序列转换为 元组
>>> tuple([1,2,3])
(1, 2, 3)
>>> 
>>>


读取,分片操作和序列通用操作相同,但元组不能被修改;





元组的意义:



1.元组可以用在 映射 中 当键 使用;



2.元组是很多内建函数和方法的返回值