python 序列操作之序列相加

0 评论
/ /
1356 阅读
/
5709 字
19 2019-04

通过加号对列表进行连接操作;

1、列表

>>> [1,3,4]+[2,5,8]

[1, 3, 4, 2, 5, 8]

2、字符串

>>> '134'+'258'

'134258'

3、元组

>>> (1,2,3)+(2,5,8)

(1, 2, 3, 2, 5, 8)

4、元素数据类型不同的列表

>>> [[1,3],[3,9]]+[[2,2],'abc']

[[1, 3], [3, 9], [2, 2], 'abc']

5、元素数据类型不同的元组

>>> ('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]

6、连续相加

>>> [2]+[3,5,9]+[10]

[2, 3, 5, 9, 10]

7、不同的序列相加

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

可见:

相同类型的序列可以相加,尽管序列中元素的数据类型是不同的;不同类型的序列不可以相加;

8、乘法

用数字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