python里面的序列包括列表(list),元组(tuple)以及字符串(string)。这三者有很多共同点的共同点:
1.都可以通过索引得到每一个元素;
2.默认索引值都是从0开始的;
3.可以通过分片的方法得到一个范围内的元素的集合
4.有很多共同的操作符(重复操作符,拼接操作符,成员关系操作符)
下面介绍一下序列的相同点:
1.列表、元组和字符串这三个可以互相转换,列表和元组是通过迭代(iterable)的方式转换的,而字符串是通过是将对象转换we字符串。
>>> temp = [1,2,3,4,5]
>>> temp = tuple(temp)
>>> temp
(1, 2, 3, 4, 5) *这里的temp已经转换为元组了
>>> temp1 = [2,3,4,5,6]
>>> temp1 = str(temp1)
>>> temp1
'[2, 3, 4, 5, 6]' *这里的temp1已经转换为字符串了
>>> temp = list(temp)
>>> temp
[1, 2, 3, 4, 5] *这里的temp又转换成为列表了
list(),tuple(),str()都是BIF
2.len()是返回序列的的长度(这里需要注意的是一个空格也算一个序列的长度)
3.max()和min()使用类型必须是同一类型,而且在序列中不能在有其他的序列。
>>> temp1 = [2,3,4,5,6,[8,9]]
>>> max(temp1)
Traceback(most recent call last):
File "<pyshell#19>", line 1,in <module>
max(temp1)
TypeError:unorderable types: list() > int()
>>> temp1 = [2,3,4,5,6,'a']
>>> max(temp1)
Traceback (most recent call last):
File"<pyshell#22>", line 1, in <module>
max(temp1)
TypeError: unorderable types: str() > int()
以上的两种方法都是错误 的。原因已经很明显了
>>> chars = "abcde"
>>> max(chars)
'e'
>>> chars = "abcde1"
>>> max(chars)
'e'
这里的返回的e,字符串里面的字符是根据ASCII码值来判断大小的,e的值最大,所以返回e。
min()方法同理。
4.sum()方法 sum()方法需要运算的类型必须是同一类型的数据,而且序列里面不能有其他的序列(注意这里的sum()方法不并适用于字符串,所以字符串除外)
>>> chars = "abcde"
>>> sum(chars)
Traceback(most recent call last):
File "<pyshell#32>", line 1,in <module>
sum(chars)
TypeError:unsupported operand type(s) for +: 'int' and 'str'
>>> temp = ['a','b','c']
>>> sum(temp)
Traceback(most recent call last):
File "<pyshell#34>", line 1,in <module>
sum(temp)
TypeError:unsupported operand type(s) for +: 'int' and 'str'
>>> temp = [1,2,3,[4]]
>>> sum(temp)
Traceback(most recent call last):
File "<pyshell#38>", line 1,in <module>
sum(temp)
TypeError:unsupported operand type(s) for +: 'int' and 'list'
成功!!!
>>> temp = (1,2,3,4)
>>> sum(temp)
10
5.sorted()BIF。只有列表才有sort()函数,元组和字符串是没有的。序列中的sorted()BIF就相当于list.sort()(默认都是升序排列的)
6.reversed()BIF。是将序列反转。但ta返回的结果并不是序列。enumerate()返回的结果同样也不是序列。下面结合sorted()来看看。
>>> temp = [4,8,9,7,2,6]
>>> sorted(temp)
[2, 4, 6, 7, 8, 9]
>>> reversed(temp)
<list_reverseiterator object at0x0000000002EBBEF0> *返回的是对象
>>> enumerate(temp)
<enumerate object at0x0000000002EF96C0> *返回的是对象
>>> sorted(reversed(temp))
[2, 4, 6, 7, 8, 9]
>>> sorted(enumerate(temp))
[(0, 4), (1, 8), (2, 9), (3, 7), (4, 2), (5,6)] *enumerate是枚举的意思。这里将每个列表里面的元素的index和该元素配对再放入列表中。
7.zip()BIF. zip是打包的意思。zip直接使用的话也是返回一个对象。
>>> a = [1,2,3,4,5,6]
>>> b = [4,5,6,7,8,9,10,11]
>>> zip(a,b)
<zip object at 0x0000000002EF7FC8> *返回的是对象
>>> list(zip(a,b))
[(1, 4), (2, 5), (3, 6), (4, 7), (5, 8), (6,9)] *和list一起使用的话,返回的是两个列表配对的是列表
>>> tuple(zip(a,b))
((1, 4), (2, 5), (3, 6), (4, 7), (5, 8), (6,9)) *和tuple一起使用的话,返回的是两个列表配对的元组
>>> str(zip(a,b))
'<zip object at 0x0000000002EF7FC8>' *和str一起使用的话,返回的是对象
最后需要注意的是,列表b中最后两个元素由于没有和列表a中的元素配对,所以列表b中的元素会自动舍去
-------------------------------------------------------------------------------------------------------------END--------------------------------------------------------------------------------------------------------------