python入门:列表和元组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python入门:列表和元组相关的知识,希望对你有一定的参考价值。
列表与元组的主要不同在于,列表是可以修改的,元组不可以。列表适用于需要中途添加元素的情形,元组适用于出于某种考虑禁止修改序列的情形。在需要处理一系列值时,序列很有用,在数据库中,你可能使用序列来表示人,其中第一个表示姓名,第二个表示年龄。用列表表示如下:
user=['Andy',20]
序列还可包含其他序列
user=['Andy',20] use=['john',21] database=[user,usr] database [['Andy', 20], ['john', 21]] data=['Aurora',user] data ['Aurora', ['Andy', 20]]
有几种操作使用于所有序列,包括索引、切片、相加、相乘和成员检查。另外还有一些内置函数,可用于确定序列的长度以及找出序列中最大和最小的元素。
索引:
序列中所有的元素都有编号-从0开始递增
set='Hello' set[0] 'H' 字符串就是由字符组成的序列,索引0指向第一个元素,这里为字母H,不同于其他一些语言,python没有表示字符的类型。因此一个字符就是只包含一个元素的字符串。
这称为索引,还可使用负索引来获取元素
set[-1] 'o'
对于字符串字面量(以及其他序列字面量)可直接对其执行索引操作,无需先将其赋给变量,这与先赋给变量在对变量执行索引操作的效果一样。
'Hello'[1] 'e'
如果函数调用返回一个序列,可直接对其执行索引操作。例如,你只想获取用户输入的姓名第二位:
name=input('name: ')[2] name: john name 'h'
切片:
使用索引来访问单个元素外,还可使用切片来访问特定范围内的元素,使用两个索引用冒号分隔:
tag='<a href="How long have you been studying python">python web site</a>' tag[9:30] 'How long have you bee' tag[49:-4] 'python web site'
切片适用于提取序列一部分,其中的编号非常重要,第一个索引是包含第一个元素的编号,第二个索引是切片后前一位的元素编号(下标从0开始)
number=[1,2,3,4,5,6,7,8,9,10] number[3:6] [4, 5, 6]
两个索引来指定切片的边界,其中一个索引指定的元素包含在切片内,第二个索引指定的元素不包含在切片内。
简写:
# 如果切片结束与序列末尾,可省略第二个索引: number[-3:] [8,9,10] # 如果切片始于序列开头,可省略第一个索引: number[:3] [1,2,3] # 复制序列 number[:] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
步长:
执行切片操作时,显示或隐示地制定起点和终点,但通常省略另一个参数,即步长。在普通切片中,步长为1(从一个元素移动到下一个元素),切片包含起点和终点之间的所有元素。
number[0:10:1] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] number[0:10:2] [1, 3, 5, 7, 9]
也可以简写:
number[::4] [1, 5, 9]
步长不能为0,但是可以是负数,这样获取元素的位置是从右向左。
number[::-2] [10, 8, 6, 4, 2]
步长为正数时,它从起点移到终点,步长为负数时,它从终点移到起点。
序列相加:
[1,2,3]+[4,5,6] [1, 2, 3, 4, 5, 6] [1,2,3]+'world' Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> [1,2,3]+'world' TypeError: can only concatenate list (not "str") to list
不能拼接序列与字符串,虽然他们都是序列,一般不能拼接不同类型的序列。
乘法:
'hello' * 2 'hellohello' [2] * 3 [2, 2, 2]
如先定义序列但并不为其赋值可用
name=[None] * 5 name [None, None, None, None, None]
成员资格:
检查特定的值是否包含在序列中,使用in.满足条件返回true,否则返回false.
name='Andy' 'A' in name True # 对于字符串来说只有它包含的字符才是其成员或元素。 'p' in 'python' True
长度、最小值、最大值
number=[100,20,80] len(number) 3 max(number) 100 min(number) 20 max(2,3,7) 7
列表常用方法
#赋值 x = [1,2,1] x[1]= 3 x [1, 3, 1] # 删除元素 x = [1,3,1] del x[1] x [1, 1] # 给切片赋值 name=list('Perl') name ['P', 'e', 'r', 'l'] name[3:]=list('ar') name ['P', 'e', 'r', 'a', 'r'] # 还可以在不删除原有元素的情况下插入新元素 name[1:1]=list('el') name ['P', 'r', 'l', 'e', 'r', 'a', 'r'] del name[1::2] name ['P', 'l', 'r', 'r']
方法是与对象(列表、数、字符串等)联系紧密的函数。
# 在末尾追加元素:append number.append(4) number [1, 2, 3, 4] # 清空列表:clear number.clear() number [] # 复制:copy a = [1,2,3] b = a b[1]=4 b [1, 4, 3] a [1, 4, 3] a = [1,4,3] b=a.copy() b[1]=5 a [1, 4, 3] # 计数:count ['to','be','or','not','to','be'].count('to') 2 x=[[1,2],1,2,[1,2,[2,1]]] x.count(1) 1 # 扩展追加exend a =[1,2,3] b= [4,5,6] a.extend(b) a [1, 2, 3, 4, 5, 6] b [4,5,6] a+b [1, 2, 3, 4, 5, 6, 4, 5, 6] a [1, 2, 3, 4, 5, 6] b [4, 5, 6] # 查找第一次在序列中出现的索引 a =['to','be','or','not','to','be'] a.index('be') 1 a[1] 'be' # inster:插入 number = [1,2,3,4,5] number.insert(2,8) number [1, 2, 8, 3, 4, 5] # pop删除末尾最后一个元素并返回删除元素,pop是唯一既修改列表又返回一个非none值的列表方法。 number.pop() 5 number [1, 2, 8, 3, 4] number.insert(0,number.pop(0)) # 删除第一个指定值的元素 a =['to','be','or','not','to','be'] a.remove('to') a ['be', 'or', 'not', 'to', 'be'] # 倒序排列:reverse number = [2,8,3,4] number.reverse() number [4, 3, 8, 2] # 对列表就地排序指对原表进行修改:sort number = [4,3,8,2] number.sort() number [2, 3, 4, 8]
元组:不可修改的序列
元组的几种写法。
(1,2,3) 1,2,3 (2,) 2,
3 * (20+2) 66 3* (20+2,) (22, 22, 22) (22)与22完全等效,加上逗号,就能完全改变表达式的值
函数tuple的工作原理与list很像,它将一个序列作为参数,并将其转换为元组。如果参数是元组,就原封不动的返回。
tuple([1,2,3]) (1,2,3) tuple('abc') ('a','b','c') tuple((1,2,3)) (1,2,3) x = 1,2,3 x[1] 2 x[0:2] (1,2)
以上是关于python入门:列表和元组的主要内容,如果未能解决你的问题,请参考以下文章
Python从入门到精通Python内置的数据类型-列表(list)和元组(tuple),九浅一深,十个章节,不信你用不到
Python从入门到精通Python内置的数据类型-列表(list)和元组(tuple),九浅一深,十个章节,不信你用不到