python笔记二-列表和元组

1、序列的索引从头位置以0开始计数,也可以从后面倒着计数,倒数第一个元素的索引为-1,倒数第二个元素的索引为-2,以此类推。

2、Python包括6种内建的序列:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。

3、列表可以修改,元组不能修改,几乎所有的情况下列表都可以代替元组,除了使用元组作为字典的键。

4、列表用[ ]包装,可以用列表表示数据库中一个人的信息,如下

>>> edward = ['Edward Gumby',42]
>>> john = ['John Smith', 50]
>>> database = [edward, john]
>>> database
[['Edward Gumby', 42], ['John Smith', 50]]

5、所有序列类型可进行的操作:索引、分片、加、乘以及检查是否属于序列的成员(成员资格),以及计算序列长度、找出最大元素和最小元素的内建函数。示例如下:

(1)索引

>>> greeting[0]
'h'
>>> greeting[-1]
'o'

直接对返回结果进行索引操作

>>> result=input('year: ')[3]
year: 2014
>>> result
'4'

(2)分片

>>> tag = 'http://www.python.org'
>>> tag[0:3]
'htt'
0:从第一个元素开始访问,3:最后一个分片元素的下一个位置,不包含在分片内

>>> tag[-3:-1]
'or'

注意:分片的索引,只要左边的索引比右边的晚出现在序列中,结果就是一个空的序列。

右边的索引值可以为空,如

>>> tag[-3:]
'org'

>>> tag[3:]
'p://www.python.org'
>>> tag[:3]
'htt'
>>> 

如果需要复制整个序列

>>> tag[:]
'http://www.python.org'

指出步长,以下是每隔2个元素访问数组,其中最后一个2表示步长

>>> array = [1,2,3,4,5,6,7,8,9,10]
>>> array[1:10:2]
[2, 4, 6, 8, 10]

当步长为负数时,分片从右到左提取元素,

>>> array[8:3:-1]
[9, 8, 7, 6, 5]

其他

>>> array[0:10:-2]
[]
>>> array[::-2]
[10, 8, 6, 4, 2]
>>> array[5::-2]
[6, 4, 2]
>>> array[:5:-2]
[10, 8]

(3)序列相加

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

>>> 'hello,'+'world'
'hello,world'

(4)序列相乘

>>> 5*'#python'
'#python#python#python#python#python'

>>> [3] * 10
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3]

设置长度为10的空序列(None)

>>> null_sequence = [None]*10
>>> null_sequence
[None, None, None, None, None, None, None, None, None, None]

(5)成员资格

>>> test = 'rw'
>>> 'r' in test
True
>>> users = ['aaa', 'bbb', 'ccc']
>>> 'ddd' in users
False

检查用户名和PIN码

>>> #check username and pin
>>> database = [
['albert','1234'],['dilbert','4242'],['smith','5412'],['jones','9843']
]
>>> username = input('username: ')
username: smith
>>> pin= input("pin: ")
pin: 5412
>>> if[username,pin] in database: print ('Access granted')


Access granted

(6)序列长度,最大值元素,最小值元素

>>> number = [11,22,33]
>>> len(number)
3
>>> max(number)
33
>>> min(number)
11

6、list函数。因为字符串不能像列表一样被修改,有时需要根据字符串创建列表

>>> list('hello')
['h', 'e', 'l', 'l', 'o']

7、基本的列表操作

(1)修改元素

>>> arr= [0,0,0]
>>> arr[1] = 1
>>> arr
[0, 1, 0]

(2)删除元素

>>> del arr[0]
>>> arr
[1, 0]

(3)分片赋值

>>> name = list('pythxx')
>>> name
['p', 'y', 't', 'h', 'x', 'x']
>>> name[-2:]=list('on')
>>> name
['p', 'y', 't', 'h', 'o', 'n']

插入

>>> numbers = [1,5]
>>> numbers[1:1]=[2,3,4]
>>> numbers
[1, 2, 3, 4, 5]

8、列表方法

(1)append

>>> numbers
[1, 2, 3, 4, 5]
>>> numbers.append(6)
>>> numbers
[1, 2, 3, 4, 5, 6]

(2)count

>>> numbers.count(4)
1

(3)extend,效率比连接符 +效率要高

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

(4)index

>>> a
[1, 2, 3, 4, 5, 6]
>>> a.index(4)
3

(5)insert, 将对象插入列表中

>>> a.insert(1,'test')
>>> a
[1, 'test', 2, 3, 4, 5, 6]

(6)pop,一般弹出最后一个元素

>>> a.pop()
6

(7)remove,移除列表中第一个匹配的元素

>>> a
[1, 'test', 2, 3, 4, 5]
>>> a.remove('test')
>>> a
[1, 2, 3, 4, 5]

(8)reverse。反转列表

>>> a
[1, 2, 3, 4, 5]
>>> a.reverse

>>> a.reverse()
>>> a
[5, 4, 3, 2, 1]

(9)sort。排序,默认是升序排序

>>> a
[5, 4, 3, 2, 1]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5]

如果要复制到另一个列表去排序,可以采用以下方法 y=x[:]

>>> x = [5,4,3,2,1]
>>> x
[5, 4, 3, 2, 1]
>>> y = x[:]
>>> y
[5, 4, 3, 2, 1]
>>> y.sort()
>>> y
[1, 2, 3, 4, 5]
>>> x
[5, 4, 3, 2, 1]

或者

>>> x
[5, 4, 3, 2, 1]
>>> y=sorted(x)
>>> y
[1, 2, 3, 4, 5]
>>> x
[5, 4, 3, 2, 1]

注:sorted可以对任何序列排序,总是返回一个列表

10、高级排序

>>> x = [4,6,2,1,7,9]
>>> x.sort(reverse=True)
>>> x
[9, 7, 6, 4, 2, 1]

按key的长度排序

>>> strings = ['aaa', 'bb', 'c']
>>> strings.sort(key=len)
>>> strings
['c', 'bb', 'aaa']

9、元组:不可变序列,用()包装

(1)数组创建比较简单,但是要注意即使只有一个元素时候,也需要添加()

>>> 1,2,3
(1, 2, 3)
>>> (1,2,3)
(1, 2, 3)
>>> ()
()
>>> 42
42
>>> 42,
(42,)
>>> (42,)
(42,)

注意:

>>> 3*(2+2)
12
>>> 3*(2+2,)
(4, 4, 4)

(2)tuple函数,跟list()函数功能相似,将一个序列作为参数并把它转换为元组, 如果参数是元组,则原样返回。

>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple((1,2,3))
(1, 2, 3)


你可能感兴趣的:(Python)