【python笔记】--序列

来源:互联网 发布:淘宝怎么扫码支付 编辑:程序博客网 时间:2024/05/22 05:34

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--------------------------------------------------------------------------------------------------------------

0 0