python3中的数据类型可以以组来出现,组这种数据类型可以分为三类列表(list)、字典(dict)和元组(tuple)。
列表
列表是使用[]括起来的一个个数据,每个数据之间一逗号分隔。数据不分类型,数字、字母、字符串、甚至是列表、字典、元组都可以。任意的列表、字典、元组放在列表、字典、元组中叫做嵌套。如下:
#纯数字#
>>> [1,2,3,4,5,6,7,8,9,10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> type([1,2,3,4,5,6,7,8,9,10])
<class 'list'>
#纯字母,注意:字母、字符串(字母其实也属于字符串)需要加一对引号(单双三引号都可以)#
>>> ['A','B','C','D','E','F','G']
['A', 'B', 'C', 'D', 'E', 'F', 'G']
>>> type(['A','B','C','D','E','F','G'])
<class 'list'>
#数字、字符串、bool类型(True)任意组合#
>>> [1,'2','a','小明',True]
[1, '2', 'a', '小明', True]
>>> type([1,'2','a','小明',True])
<class 'list'>
#嵌套:数字、字符串、bool类型、列表、字典、元组任意组合#
>>> [[1,'2','w'],True,1,'2','a',(1,'2','a'),{'1':'6','2':'8','a':'b'}]
[[1, '2', 'w'], True, 1, '2', 'a', (1, '2', 'a'), {'1': '6', '2': '8', 'a': 'b'}]
>>> type([[1,'2','w'],True,1,'2','a',(1,'2','a'),{'1':'6','2':'8','a':'b'}])
<class 'list'>
#带()的为元组,带{}为字典,具体特性下面会说#
列表可以任意读增删改以及判定其中的任意内容,其中增删改之后只要再保存回对应的变量里,就会永久改变。读取的数据可以和其他数据任意组合并输出。
首先我们先看下读取,如下:
#读取:直接在列表的后方添加一个[]包含的数字序列,0表示列表从左往右数第一个,-1表示从右往左数第一个#
>>> ['A','B','C','D','E','F','G'][1]
'B'
#直接使用变量做读取#
>>> first=['A','B','C','D','E','F','G']
>>> print (first[1])
'B'
#读取内容与其他数据组合并输出#
>>> first=['A','B','C','D','E','F','G']
>>> print ('hello,'+first[1])
hello,B
如果想读取某个范围的列表可以通过使用[1:5]这种的方式来实现,[1:5]中:的左边代表起始位置,:右边代表终止位置,但是右边的数字要比你要读取的那个位置数大一,比如你要读取前六位,应该是[0:7]而非[0:6],这是python中的差一性。
如果将[1:5]中的1去掉,即[:5],这个代表从最开始读取,一直读取到第四位。如果将[5:10]中的10去掉,即[5:],这个代表从第五位截取,一直截取到最后一位。如果是[-3:]代表的就是从倒数第三位一直读取到最后。
#范围读取(1)#
>>> ['A','B','C','D','E','F','G'][0:4]
['A','B', 'C', 'D']
#范围读取(2)#
>>> ['A','B','C','D','E','F','G'][:4]
['A','B', 'C', 'D']
#范围读取(3):从第二位到第十位,每隔一位截取一次#
>>> ['A','B','C','D','E','F','G','H','I','J','K'][1:11:2]
['B', 'D', 'F', 'H', 'J']
也可以判断某个数据是否在列表中(使用in)或者是否不在列表中(not in)或者列表一共有几位(len):
#是否在列表中#
>>> 'A' in ['A','B','C','D','E','F','G','H','I','J','K']
True
>>> '1' in ['A','B','C','D','E','F','G','H','I','J','K']
False
#是否不在列表中#
>>> 'A' not in ['A','B','C','D','E','F','G','H','I','J','K']
False
>>> '1' not in ['A','B','C','D','E','F','G','H','I','J','K']
True
#总共有几位#
>>> len(['A','B','C','D','E','F','G','H','I','J','K'])
11
还可以判定列表中最大值和最小值是多少,数字的话按0最小来拍,字符则是按字母排序来排,有空格则是空格最小。
>>> min(['小王','小李','小安','小张','小赵','小沈'])
'小安'
>>> max(['小王','小李','小安','小张','小赵','小沈'])
'小赵'
>>> min(['A','B','C','D','E','F','G','H','I','J','K'])
'A'
>>> max(['A','B','C','D','E','F','G','H','I','J','K'])
'K'
>>> min([1,2,3,4,5,6,7,8,9,10,11])
1
>>> max([1,2,3,4,5,6,7,8,9,10,11])
11
#但如果是字符串格式的数字,则是9最大,因为这时候所有数据都是字符串#
>>> min(['1','2','3','4','5','6','7','8','9','10','11'])
'1'
>>> max(['1','2','3','4','5','6','7','8','9','10','11'])
'9'
列表数据的修改:
#修改列表数据#
>>> first=['A','B','C','D','E','F','G']
>>> first[0]='AAA'
>>> print (first)
['AAA', 'B', 'C', 'D', 'E', 'F', 'G']
我们可以使用sort()或者sort()依据序列(即0、1、2)来对列表进行永久性排序。
#sort()永久性排序:正序#
>>> test=[1,3,5,7,9,11,2,4,6,8,10]
>>> test.sort()
>>> print(test)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
#sort()永久性排序:倒序#
>>> test=[1,3,5,7,9,11,2,4,6,8,10]
>>> test.sort(reverse=True)
>>> print(test)
[11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
#sorted()临时排序#
>>> sorted([1,3,5,7,9,11,2,4,6,8,10])
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
#验证sorted()临时排序#
>>> test = [1,3,5,7,9,11,2,4,6,8,10]
>>> test1 = sorted([1,3,5,7,9,11,2,4,6,8,10])
>>> print(test1)
>>> print(test)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
[1, 3, 5, 7, 9, 11, 2, 4, 6, 8, 10]
也可以用reverse()(和上面sort用法里面的反序是一样的)将列表现有序列相反排列:
>>>test = [1,3,5,7,9,11,2,4,6,8,10]
>>>test.reverse()
>>>print (test)
[10, 8, 6, 4, 2, 11, 9, 7, 5, 3, 1]
列表数据的增加:
#添加列表数据1:直接插入(insert()函数) 注:下文中insert(0,'efg')中的0代表序列数,在第几位插入就填几#
first=['A','B','C','D','E','F','G']
first.insert(0,'efg')
print (first)
['efg', 'A', 'B', 'C', 'D', 'E', 'F', 'G']
#添加列表数据2:在末尾插入(append()函数)#
>>> first=['A','B','C','D','E','F','G']
>>> first.append('aaa')
>>> print (first)
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'aaa']
#添加列表数据3:列表相加#
>>> ['A','B','C','D','E','F','G']+['A', 'B', 'C', 'D', 'E', 'F', 'G', 'aaa']
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'aaa']
#重复列表数据#
>>> ['1','2','3']*3
['1', '2', '3', '1', '2', '3', '1', '2', '3']
列表数据的删除:
#删除列表数据1:根据位置删除(del),del first[0]中的0填删除数据的序列位即可#
>>> first=['A','B','C','D','E','F','G']
>>> del first[0]
>>> print (first)
['B', 'C', 'D', 'E', 'F', 'G']
#删除列表数据2:pop()(将删除的数据值存储到其他地方,以便以后可以调用)#
#在pop()的()中添加相应位数即可删除相应数值,如不添加数字则默认删除最后一位#
>>> first = ['A','B','C','D','E','F','G']
>>> first_pop = first.pop()
>>> print (first)
>>> print (first_pop)
['A','B','C','D','E','F']
G
>>> first = ['A','B','C','D','E','F','G']
>>> first_pop = first.pop(0)
>>> print (first)
>>> print (first_pop)
['B','C','D','E','F','G']
A
#根据数据内容删除#
>>> first = ['A','B','C','D','E','F','G']
>>> first.remove('C')
>>> print (first)
['A','B','D','E','F','G']
当然,并非是很多数据才能组成一个列表,只有一个数据也可以组成一个列表。即使没有数据,只要有[]就是列表。
>>> type([1])
<class 'list'>
>>> type([])
<class 'list'>
最后,还有一个用法len()这个不止在列表,在很多地方(比如字符串)都可以使用,作用是查看数据长度。
>>> len([10, 8, 6, 4, 2, 11, 9, 7, 5, 3, 1])
11