数据结构:通过某种方式将数据元素组合在一起的集合。在Python中,最基本的数据结构就是 序列,序列中每个元素被分配一个序号(即元素位置),也叫索引,索引从0开始。Python种包含6种内建的序列,但最常见的是列表和元组。两者区别是:列表可修改;元组不可修改。
A=["liu",45]
B=["wang",32]
database=[A,B]
database
Out[1]: [['liu', 45], ['wang', 32]]
database就是一个自建的数据库
1、对序列的操作
有索引、分片、加、乘、检查某元素是否属于序列、计算序列长度、最大值、最小值以及迭代等(迭代:对序列中的元素重复操纵)
1.1索引
A="hello"
A[0]
Out[2]: 'h'
索引0指的是第1个元素
字符串是有字符组成的序列
A="hello"
A[-1]
Out[3]: 'o'
索引为负数时,从序列右边计数,最后一个元素的索引位置是-1,而不是-0
1.2 切片
A=[1,2,3,4,5]
A[1:3]
Out[7]: [2, 3]
第一索引元素包含在分片内,第二个不包括。即A[1:3]只取第1和2个元素
如果想取最后几个元素
A=[1,2,3,4,5]
A[2:5]
Out[8]: [3, 4, 5]
这样取当然可以,切记A[2:5]的2和5是元素位置,不是元素
若从列表截尾处开始呢?
A=[1,2,3,4,5]
A[-3:-1]
Out[9]: [3, 4]
A[-3:-1]表示取倒数第3和倒数第2个元素,不包括倒数第1个
如果把-1换成0呢?
A=[1,2,3,4,5]
A[-3:0]
Out[10]: []
因为只要左边的索引比右边的索引出现的晚,就会输出空白序列(倒数第3个比第1个出现的晚)
其实,对于取最后几位元素有一个捷径,即把-1换成空格
A=[1,2,3,4,5]
A[-3:]
Out[11]: [3, 4, 5]
对于从前取元素同样适用:
A=[1,2,3,4,5]
A[:3]
Out[12]: [1, 2, 3]
左右索引均置空,相当于取所有元素
A=[1,2,3,4,5]
A[:]
Out[13]: [1, 2, 3, 4, 5]
如果分片时,按步长值取,怎么样?
A=[1,2,3,4,5]
A[0:4:2] 以2为步长值
Out[14]: [1, 3]
A=[1,2,3,4,5]
A[::1] 以1为步长值
Out[15]: [1, 2, 3, 4, 5]
步长值不能为0,但可以为负
A=[1,2,3,4,5]
A[3:1:-1] 为负表示从右到左提取元素
Out[16]: [4, 3]
1.3 序列相加
[1,2]+[3,2]
Out[18]: [1, 2, 3, 2]
"hello"+"world"
Out[19]: 'helloworld'
[1,2]+"hello"
TypeError: can only concatenate list (not "str") to list 出现错误
类型错误:只能连接列表(不是“str”)到列表
因为两种相同类型的列表才能相连,列表和字符串无法相连
1.4 乘法
"hello"*4
Out[21]: 'hellohellohellohello'
一个序列乘以数字n,表示该序列重复n次
1.5 检查元素是否在序列内(用in运算符)
"h" in "hello"
Out[22]: True 字母在字符串内输出TRUE
"w" in "hello"
Out[23]: False 字母不在字符串内输出false
users=["A","B"]
input("enter your name:") in users
enter your name:A
Out[26]: True
该例子是检查某用户名字是否在拥护列表中
#检查用户名和pin码
database=[["A","12"],["B","32"]]
username=input("user name:")
pin=input("pin code:")
if [username,pin] in database:print ('通过')
else:print ("不通过")
user name:A #在user name 出输入名字
pin code:44 #在pin code处输入pin码
不通过 #显示结果
1.6 长度、最大值和最小值
A=[12,34,32]
len(A)
Out[43]: 3 #序列A有三个元素
A=[12,34,32]
max(A)
Out[44]: 34 #序列A最大值元素
min(A)
Out[45]: 12 #序列A最小值元素