赞
踩
序列:指的是一种包含多项数据的数据结构,序列包含的多个数据项(也叫成员)按顺序排列,可通过索引来访问成员。
Python中常见的序列包括字符串、元组和列表等,另外前面学到过的字节串(bytes)也是序列,以及后面介绍的namedtuple
也是序列。
我们介绍的序列主要是列表和元组,他们非常相似,最主要的区别在于:列表是可变的、元组是不可变的。
元组一旦构建出来,程序不能修改元组所包含的元素,就像字符串也是不可变的,程序无法修改字符串所包含的字符序列,但是列表是可变的,程序可以修改列表所包含的元素。
如果只是固定的保存多个数据项,不需要修改他们,此时就应该使用元组;反之就应该使用列表。
列表和元组的关系就是可变不可变。
区分方法:在构建时就可以区分:
list()
创建,元组用tuple()
创建创建元组与列表方式一:
[ele1,ele2,ele3,...]
(ele1,ele2,ele3,...)
(ele1,)
创建元组与列表方式二:
list()
创建,元组用tuple()
创建list
和tuple
是Python的内置类型,因此list()
、tuple()
其实是他们的构造器。help(list)
来查找其作用,会发现它是一个类,使用list来创建列表的方式是: _list = list(range(2,10))
print(_list)
[2, 3, 4, 5, 6, 7, 8, 9]
,需要注意的是10是不包括的。range()
函数简单介绍:有两种用法,第一:写两个至三个元素,分别表示起始,终点,步长,如果写一个元素,就表示总共有几项,且从0开始加。例如:range(4)
的结果是0,1,2,3
,具体是列表还是元组和前面的其他函数有关。list1 = list(my_tuple)
通过索引来访问元素
len()
函数,他返回的是列表包含的元素个数。print(len(my_tuple))
index out of range
,也就是说,访问时索引必须在-len() ~ len()-1
之间,这样的索引是有效的。子序列:
print(my_tuple[2:5])
这是从第三个元素取到了第五个元素print(my_tuple[2:5:2])
序列的加法:
list\tuple
函数。序列的乘法:
in运算:
print(20 in my_list)
输出结果就只有True
和False
,注意如果判断字符串,需要加上单、双引号。最大值和最小值:
max(),min()
全局函数来获取元组或列表的最大值,最小值max(),min()
要对元组、列表中的元素比较大小,因此程序要求传给该函数的元组、列表的元素必须是相同类型,且可比较大小。 a_tuple = (20,10,-2,15.2,102,50)
b_list = ["crazy","fkit","python","Kotlin"]
print(max(a_tuple))
print(min(b_list))
- 这样的结果就分别是:`102`,`Kotlin`
range
都支持自动解包a,b,c,d = range(30,34)
这样的语句都是合法的*
的变量来接收,但是要注意书写顺序。a,b,*c = "fkjava.org
a,b,c = val1,val2,val3
,这是一个封包和解包的一个比较复杂的过程,结果是a = val1,b = val2,c = val3
append()
方法把传入的参数追加到列表的最后面,链接:这也是c语言中文件操作关键字"a"
的由来,这个方法追加另一个列表(序列)时,列表被当成了一个元素,也就是说形成了嵌套。extend()
方法就是很普通的用于追加另一个列表(序列),它会将序列(列表)中的元素追加进来。insert()
方法将元素插入列表的指定位置,需要多一个参数 my_list = ["python", "swift"]
my_list.append(tuple(range(3,6)))
print(my_list)
['python', 'swift', (3, 4, 5)]
my_list = ["python", "swift"]
my_list.extend(range(20,25))
print(my_list)
['python', 'swift', 20, 21, 22, 23, 24]
my_list = ["python", "swift"]
my_list.extend("fkjava")
print(my_list)
['python', 'swift', 'f', 'k', 'j', 'a', 'v', 'a']
,这说明extend方法甚至会拆分字符串 my_list = ["python", "swift",20,3.4,19,"lancibe"]
my_list.insert(3, "lus")
print(my_list)
输出结果是:['python', 'swift', 20, 'lus', 3.4, 19, 'lancibe']
,第一个参数就是插入的位置,例如该程序,第一个参数时3,则在第四个位置插入"lus"
。注意如果第一个参数越界,会直接在最前/最后面插入。
删除元素:
del my_list [2]
,这样的语句意思是删除my_list变量中的第3个元素,当然,这也是索引的用法,所以也可以写两至三个变量。remove()
方法来删除元素,remove()方法不根据索引删除元素,而是删除第一个找到的元素。替换元素:
列表的方法:
dir(list)
可以查看列表支持的方法,除了以上方法,还可以使用的有以下方法:key
;另一组数据可以通过key
来访问,被称为value
key
,value
就有了意义。key-value
对,key与value之间用英文冒号隔开;多组key-value对之间用英文逗号隔开。 score = {"语文":85,"数学":92,"英语":78}
print(score)
{'语文': 85, '数学': 92, '英语': 78}
scores = dict([("语文",85),("数学",92),("英语",78)])
print(scores)
scores1 = dict(语文=85,数学=92,英语=78)
print(scores)
- 这是dict函数的另一种使用方法。这是用关键字参数创建dict,此时不能用表达式。
key:value
成对出现。字典的key必须是不可变的,因此列表不能作为dict的key。print(score["语文"])
,这样的结果就是85。key-value
对。例如:score["生物"] = 91
,就是增加了一个key-value对。del score["数学"]
in/not in
可判断dict是否包含指定keydir(dict)
来查看字典的所有方法clear()
用于清空字典中所有key-value对get()
方法其实就是根据key来获取valueupdate()
方法可使用一个字典所包含的key-value对来更新已有的字典items()、keys()、values()
分别用于获取字典中的所有key-value对,所有key,和所有value score = {"语文" : 86, "数学":95,"英语":92}
# 用一个字典(字典、序列、关键字参数)来更新原有的字典
# 对于已有的key,是更新value,对于不存在的key,是增加了key-value,注意如果某些元素,那就保持不变
score.update({"语文":89,"生物":91})
# 此时序列的每个元素都只能有两个元素
score.update((("语文",80),("物理",93)))
print(score)
# 使用关键字参数,不支持用表达式
score.update(语文=79, 化学=99)
print(score)
{'语文': 80, '数学': 95, '英语': 92, '生物': 91, '物理': 93}
{'语文': 79, '数学': 95, '英语': 92, '生物': 91, '物理': 93, '化学': 99}
# 遍历key
for key in score.keys():
print(key)
语文
数学
英语
生物
物理
化学
# 遍历key,value(使用到了序列解包)
for key,value in score.items():
print(key,value)
语文 79
数学 95
英语 92
生物 91
物理 93
化学 99
pop()
方法用于获取、并删除指定key对应的valuepopitem()
方法用于随机的弹出字典中的一个key-value对。setdefauft()
方法也用于根据key来获取对应value的值,并为不存在的key设置默认值。print(score.setdefault("语文",50))
这样的输出结果是86,但是如果不存在"语文"
这一key,则将value的默认值赋为50.fromkeys()
方法使用给定的多个key创建字典,这些key的value默认都是None;也可以额外传入一个参数作为默认的value。s1 = "名字是:%s,年龄为:%d
再输出语句中写:print(s1 % ("lancibe", 18))
s2 = "名字是:%(name)s,年龄为:%(age)d"
print(s2 % {"age" : 18 , "name": "lancibe"})
名字是:lancibe,年龄为:18
两者相同。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。