序列
序列,指的是一种包含多项数据的结构,序列包含的多个数据项(也叫成员)按顺序排列,可通过索引(也叫下标)来序列成员。
Python常见的序列包括字符串、元组和列表等。另外前面介绍的字符串(bytes)也是序列,namedtuple也是序列。
元组和列表
元组和列表主要区别只在于:列表是可变的,元组是不可变的。
元组一旦构建出来,程序不能修改元组所包含的元素(就像字符串也是不可变的,程序无法修改字符串所包含的字符序列);但列表是可变的,程序可以修改列表所包含的元素。
如果只是固定地保存多个数据项,不需要修改它们,此时就应该使用元组;反之就应该使用列表。
列表和元组的关系就是可变和不可变的关系。
如何区分列表和元组呢?很简单,构建时就可以区分:
A.方括号时列表,圆括号时元组
B.列表用list()创建,元组tuple()创建。
创建列表和元组的语法也有点相似,区别只是创建列表使用方括号,创建元组使用圆括号,并在括号中列出它们的元素。
创建列表:
[adad,dada2,dad,2e,3eee…]
创建元组:
(adad,dada2,dad,2e,3eee…)
由于圆括号在Python中是很普通的符号,因此如果创建只包含一个元素的元组,不能仅在圆括号中放一个元素,还必须在元素后放一个逗号
创建只包含一个元素的元组:
(ele1,)
#创建列表用方括号
#列表所包含是可以改变
my_list = [1,1,2.2,'dasd']
#创建元组用圆括号
#元组一旦创建,它所包含的元素是不能改变
my_tuple = (3,1,2.2,'dasd')
#如果创建的元组只有一个元素,一定要在元素的后面添加逗号
single_tuple_err = ('java')
print(single_tuple_err)
single_tuple_err = ('java',)
print(single_tuple_err)分别用list()函数或tuple()函数来构建列表或元组
本质上:其实list、tuple是Python的内置类型,因此list()、tuple(其实是它们的构造器
#用list函数创建列表
my_list = list(range(4,12))
print(my_list)
#用tuple函数创建列表
my_tuple = tuple(range(4,46))
print(my_tuple)
#将元组转成list
list2 = list(my_tuple)
print(list2)
#将list转成元组
tuple2 =tuple(my_list)
print(tuple2)通过索引访问元素
两种方式:正向访问和反向访问
my_tuple = tuple(range(3, 10))
print(my_tuple)
#len()函数可用于访问长度
print(len(my_tuple))
print(my_tuple[2])#第三个元素
print(my_tuple[-2])#第三个数
my_list = ['Python','swift','kotlin','Java','oc','go']
print(my_list[3])
print(my_list[-3])
#当用索引访问元素时,索引必须在-len~ln-1之间,否则程序会报错:list index out of range
print(my_list[6])子序列
列表和元组同样也可使用索引获取中间一段,这种用法被称为slice(分片或切片)
slice的完整语法格式[start: end :step]
my_tuple=('Java','js',20,100,'kotlin','python','oc')
#获取子序列(中间一段)
print(my_tuple[2: 5])
print(my_tuple[-5:-2])
print(my_tuple[3:-1])
#指定step
print(my_tuple[2:-1:2])
print(my_tuple[2:-1:3])序列加法
列表和元组支持加法运算,加法的和就是把两个“列表或元组”所包含的元素的总和。
列表只能和列表相加;元组只能和元组相加;元组不能直接和列表相加。
ist1 =[20,'python']
list2 =list(range(4))
#加法的运算就是把两个元素拼接在一起
print(list1+list2)
tuple1 = (20,'python')
tuple2 = tuple(range(4))
#加法就是把两个元组的元素拼接在一起
print(tuple1+tuple2)
#如果你确实需要列表和元组相加
#则可以先进行转换
print(list1 + list(tuple2))
print(tuple(list1)+ tuple2)序列乘法
列表和元组可以和整数执行乘法,列表和元组乘法的意义就是把它们包含的元素同事进行加法、乘法运算。
list3 = ['Python',29,-2]
#序列只能与整数相乘,就是把元素重复N次
print(list3*3)
#字符串也属于序列,因此字符串也支持与int相乘
s = 'ffJava'
print(s * 5)
tuple3 = tuple(range(5))
print(tuple3 * 5)in
in运算符用于判断列表或元组是否包含某个元素
list4 = ['Python',29,-2]
print(-2 in list4) #判断是否在list4列表内,是True,否为False
print(1 in list4)序列中 最大值、最小值、长度
使用函数:len()、max()、min()函数可获取元组列表的长度、最大值和最小值。
mylist = ['Python','kotlin','Swift','Java','Go']
#len可以获取序列包含多个元素
print(len(mylist))
#len可以获取序列包含多少个元素
print(len(mylist))
#字符串比较大小,先比较第一个字符2,如果一个字符相等,再比较第二个字符...
print(max(mylist))
print(min(mylist))序列封包
把多个赋值给一个变量时,Python会自动将多个值封装成元组。这种功能称为序列封包。
#python先会将多个值封装成元组,然后将元组存入变量
mydata = 25, 30, ‘python’
print(mydata)
print(type(mydata))
序列解包
序列(元组或列表等)可被直接赋值给多个变量,此时序列的各元素被会一次赋值给每个变量(要求序列的元素个数和变量个数相等),这种功能被称为序列解包
#python先会将多个值封装成元组,然后将元组存入变量
mydata = 25, 30, 'python'
print(mydata)
print(type(mydata))
mylist = [20,'kotlin',3.14]
#自动解包,列表中的3个值自动赋值给3个变量
a,b,c =mylist
print(a)
print(b)
print(c)
#所有序列(甚至包括range)都支持自动解包
a, b, c, d=range(30,40)
print(a)
print(b)
print(c)
print(d)
mytuple = ['Python','kotlin','Swift','Java','Go']
#如果只要解包某一个值,剩下的值可用一个带*的变量(列表)来接收
first, *rest =mytuple
print(first)
print(rest)
#如果只要解包某几个值,剩下的值可用一个带*的变量(列表)来接收
first, *rest,last =mytuple
print(first)
print(rest)
print(last)
#如果只要解包某几个值,剩下的值可用一个带*的变量(列表)来接收
first,second, *rest =mytuple
print(first)
print(rest)
print(second)
a, b, *c ='fkjava.org'
print(a)
print(b)
print(c)Python的赋值运算符支持同时将多个赋值给多个变量——这是因为同时运用序列封包和序列解包
#先将右边多个值封包成元组,
#元组又被解包依次对3个变量赋值
a,b,c=30,'python',3.4
print(a)
print(b)
print(c)
















