Python中序列是最基本的数据结构,序列中每个元素都有编号,其中第一个元素索引为0,第二个为1,以此类推,同时也可以从序列的末尾,用负数表示元素的位置
Python中内置了很多序列,本文主要讲述两种序列,列表和元组
列表和元组的最主要区别在于,列表是可以修改的,而元组不可以
列表的操作:
- 创建列表
列表的创建很简单,只要用逗号将不同的元素隔开,然后使用方括号括起来即可
list1 = [1,2,3]
list2 = [‘a’,’b’,’c’]
list3 = [1,2,’a,’b’’]
- 访问列表中的元素
列表中所有的元素都有编号----从0开始递增,可以使用列表的编号来访问列表中的元素:
>>> list1 = ['a','b','c']
>>> list1[1]
'b'
也可以使用负数,即从右往左获取列表中的元素
>>> list1 = ['a','b','c']
>>> list1[-1]
'c'
实例:输入1-7 显示对应星期几
#!/usr/bin/env python
#!-*-coding:utf-8-*-
#!@Author:Chauncy
weeks = [
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday',
'Sunday'
]
week = input("Please input week(1-7):")
week_number = int(week)
week_name = weeks[week_number-1]
print(week_name)
- 切片
除了索引来访问单个元素之外,还可以使用切片来访问特定范围内的元素,即是用两个索引,中间用冒号隔开:
list1 = ['a','b','c']
>>> list1[1:2]
['b']
>>> list1[1:3]
['b', 'c']
两个索引分别界定了列表的边界,但要注意,索引的第一个元素是包含在切片内的,但第二个不包括,即左闭右开
切片有以下几种简写
list1 = [‘a’,’b’,’c’]
list1[:] à表示整个索引
list1[:1] à等价于list1[0:1]
list1[0:] à等价于list1[:],即整个索引
实例 从URL中提取域名
#!/usr/bin/env python
#!-*-coding:utf-8-*-
#!@Author:Chauncy
url = input("Please input the URL:")
domain = url[11:-4]
print(domain)
切片的步长
>>> numbers=[1,2,3,4,5,6,7,8,9]
>>> numbers[1:10:2]
[2, 4, 6, 8]
即指定中间可以跳过一些元素,步长可以为负数,即从右往左提取,但不可以为0
- 列表的数学运算
可以使用加法来拼接两个列表
>>> [1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6]
将序列于数值x相乘时,将重复这个序列x次来创建一个新的序列
>>> [1,2,3] * 4
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
- 成员检查
检查某个元素是否包含在序列中,可以使用in运算符,此时将返回布尔值:True False
>>> list1 = ['a','b','c']
>>> 'a' in list1
True
>>> 'd' in list1
False
- 列表的基本操作
- 修改列表:给元素赋值
>>> x = [1,1,1]
>>> x[2] = 2
>>> x
[1, 1, 2]
- 删除元素:
>>> x
[1, 1, 2]
>>> del x[2]
>>> x
[1, 1]
- 切片赋值:
>>> name = ['P','e','r','l']
>>> name[2:] = list('ar')
>>> name
['P', 'e', 'a', 'r']
通过切片的赋值,可以将切片替换为长度与其不同的序列,使用切片赋值还可以在不删除原有元素的情况下插入新的元素,也可以执行步长不为1的切片赋值
- 列表的方法
- append
将一个对象附加到列表的末尾,不返回修改之后的列表,而是直接修改旧的列表
>>> listq = [1,2,3]
>>> listq.append(4)
>>> listq
[1, 2, 3, 4]
- clear
清空列表,类似于切片listq[:]=[]
>>> listq
[1, 2, 3, 4]
>>> listq.clear()
>>> listq
[]
- copy
赋值列表,常规复制只是将另一个名称关联到列表
>>> a = [1,2,3,4]
>>> b=a
>>> b[1] = 4
>>> a[1]
4
如果要使得a和b指向不同的列表,就必须将b关联到a的副本
>>> a = [1,2,3,4]
>>> b = a.copy()
>>> b[1] = 4
>>> a[1]
2
- count
统计指定元素在列表中出现了多少次
>>> a = [1,1,1,2,3,4]
>>> a.count(1)
3
- extend
能够将多个值附加到列表的末尾,即可以用一个列表来扩展另一个列表
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
- index
在列表中查找指定值第一次出现的索引,值不存在时触发ValueError异常
>>> a = [1,2,3,9,8,5,6,8,9]
>>> a.index(8)
4
- insert
插入一个对象到列表中,前面为插入位置,后面为插入值
>>> a = [1,2,3,4]
>>> a.insert(2,5)
>>> a
[1, 2, 5, 3, 4]
- pop
从列表中删除一个元素(末尾的最后一个元素),并返回这一元素(pop是唯一既能修改列表又返回一个非None值额列表方法)
>>> a = [1,2,3]
>>> a.pop()
3
- remove
用于删除第一个为指定值的元素(修改列表且不返回值)
>>> a = [1,2,3,4,5]
>>> a.remove(5)
>>> a
[1, 2, 3, 4]
- reverse
按照相反的顺序排列列表中的元素
>>> a
[1, 2, 3, 4]
>>> a = [1,2,3,4,5]
>>> a.reverse()
>>> a
[5, 4, 3, 2, 1]
- sort
用于对列表的排序,意味着对原来列表的进行修改,而不是返回排序后的列表的副本,如果为了获取排序后列表的副本可以用sorted方法
>>> a = [2,5,8,3,4]
>>> a.sort()
>>> a
[2, 3, 4, 5, 8]
sorted
>>> a
[2, 3, 4, 5, 8]
>>> b = a.sort()
>>> b
>>> b = sorted(a)
>>> b
[2, 3, 4, 5, 8]
元组为不可修改的序列