序列-2
通用序列操作
序列相加
通过加号对列表进行连接操作;
列表
>>> [1,3,4]+[2,5,8]
[1, 3, 4, 2, 5, 8]
字符串
>>> ‘134‘+‘258‘
‘134258‘
元组
>>> (1,2,3)+(2,5,8)
(1, 2, 3, 2, 5, 8)
元素数据类型不同的列表
>>> [[1,3],[3,9]]+[[2,2],‘abc‘]
[[1, 3], [3, 9], [2, 2], ‘abc‘]
元素数据类型不同的元组
>>> (‘245‘,1,[5,8])+([3,4],‘5‘,(5,9))
(‘245‘, 1, [5, 8], [3, 4], ‘5‘, (5, 9))
>>> [2]+[3,5,9]+[10]
[2, 3, 5, 9, 10]
连续相加
>>> [2]+[3,5,9]+[10]
[2, 3, 5, 9, 10]
不同的序列相加
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
‘123‘+[5,8]
TypeError: cannot concatenate ‘str‘ and ‘list‘ objects
>>> [5,8]+(2,5,8)
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
[5,8]+(2,5,8)
TypeError: can only concatenate list (not "tuple") to list
>>> ‘123‘+(2,5,8)
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
‘123‘+(2,5,8)
TypeError: cannot concatenate ‘str‘ and ‘tuple‘ objects
可见:
相同类型的序列可以相加,尽管序列中元素的数据类型是不同的;
不同类型的序列不可以相加;
乘法
用数字x乘以一个序列会生成新的序列,在新的序列中,原来的序列被重置x次;
>>> ‘string‘*5
‘stringstringstringstringstring‘
>>> (‘1‘,‘2‘,‘3‘)*5
(‘1‘, ‘2‘, ‘3‘, ‘1‘, ‘2‘, ‘3‘, ‘1‘, ‘2‘, ‘3‘, ‘1‘, ‘2‘, ‘3‘, ‘1‘, ‘2‘, ‘3‘)
>>> [1,‘2‘,3]*5
[1, ‘2‘, 3, 1, ‘2‘, 3, 1, ‘2‘, 3, 1, ‘2‘, 3, 1, ‘2‘, 3]
序列相乘后生成的新序列,类型不变;
None、空列表和初始化
空列表可以简单地通过两个中括号进行表示([])。但如果想一个占用10个元素空间,却不包括任何有用内容的列表,需要使用None。它是python的内建值,确切含义是“这里什么也没用”。即:
>>> [None]*10
[None, None, None, None, None, None, None, None, None, None]
成员资格
为了检查一个值是否在序列中,可以使用in运算符。
这个运算符检查某个条件是否为真,然后返回相应的值,条件真则返回True,假则返回False;这样的运算符叫做布尔运算符,真值叫布尔值。
>>> permission=‘rw‘
>>> ‘w‘ in permission
True
>>> ‘x‘ in permission
False
>>> users=[‘signjing‘,‘sj‘]
>>> raw_input(‘Enter your name: ‘) in users
Enter your name: sinjing
False
>>> raw_input(‘Enter your name: ‘) in users
Enter your name: sj
True
>>> class1=[
[‘stud1‘,18],
[‘stud2‘,20],
[‘stud3‘,22],
[‘stud4‘,17]
]
>>> student1=[‘stud3‘,22]
>>> student2=[‘stud5‘,28]
>>> student1 in class1
True
>>> student2 in class1
False
长度、最大值、最小值
内建函数len、min和max非常有用;
len函数返回序列中所含元素的数量;
min函数和max函数则返回序列中最小和最大的元素。
>>> class1=[
[‘stud1‘,18],
[‘stud2‘,20],
[‘stud3‘,22],
[‘stud4‘,17]
]
>>> min(class1)
[‘stud1‘, 18]
>>> max(class1)
[‘stud4‘, 17]
>>> len(class1)
4
>>> numbers=[11,33,24]
>>> min(numbers)
11
>>> max(numbers)
33
>>> len(numbers)
3
存在的疑问
学习的过程中难免有疑问,暂且记录下来。
1序列相乘后得到的序列类型不变,但单元素的元组进行乘法后得到的不是元组;
>>> (‘string‘)*5
‘stringstringstringstringstring‘
>>> (5)*5
25
2 对元组进行成员资格检查,得到的结果与预想不一致;
>>> (2,3,9) in (1,2,3,9,19)
False