Python 从入门到放弃(一)

Python 从入门到放弃(一)

一个没有逻辑顺序的python笔记,包括日常使用python时的总结与阅读《Python基础教程》([挪] Magnus Lie Hetland 著) 的读书笔记:

这里写图片描述

2011/11/20 Mon 15:29

列表 (List) 和元组 (Tuple)

Python中有6中内建序列(sequence):list,tuple,字符串,Unicode字符串,buffer,xrange。

序列映射是两种主要的容器(container)。
序列包括 list 和 tuple , 映射包括 dict
set 即不是序列又不是映射

序列操作:indexing,slicing,adding,multiplying

slicing:第一个参数包含,第二个不包含,可以用第三个参数指定步长,步长可以是负数。

In [4]: a
Out[4]: [0, 1, 2, 3, 4, 5, 6, 7, 8]
In [5]: a[8:3:-2]
Out[5]: [8, 6, 4] 

adding:同类序列可以相加,进行连接
multiplying:新的序列重复原有序列,乘数为重复次数

In [6]: a = [1,2] * 8
a
Out[7]: [1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]

None 用来代表空值,类似matlab的NaN,如需要无值的初始化,可以:

a = [None] * 6
a
Out[9]: [None, None, None, None, None, None]

成员资格:in 来检查是否是成员,对于字符串可以如下:(Python2.3起)

In [10]: sub = 'too young too simple'
In [11]: 'you' in sub
Out[11]: True
In [12]: 'naive' in sub
Out[12]: False

分片赋值:可以替换成与原序列不等长的内容:

name = list('Pear')
name
Out[26]: ['P', 'e', 'a', 'r']
name[1:] = list('ahahaha')
name
Out[28]: ['P', 'a', 'h', 'a', 'h', 'a', 'h', 'a']

同时分片赋值还能实现 insert 的 method 功能,非常高级666:

numbers = range(5)
numbers
Out[14]: [0, 1, 2, 3, 4]
numbers[1:1]
Out[15]: []
numbers[1:1] = [666,666]
numbers
Out[17]: [0, 666, 666, 1, 2, 3, 4]

list 的各种 method :append,count(查元素个数),index(第一个匹配项的索引位置),insert,pop(默认LIFO,可指定pop(someindex) )。
reverse 方法可以反向存放。(注意列表的 method 一般都为原位操作,改变原列表),sort 排序。reversed 和 sorted 函数可以不改变原 list 。

a
Out[30]: [3, 5, 1, 8, 6, 9]
sorted(a)
Out[31]: [1, 3, 5, 6, 8, 9]
a
Out[32]: [3, 5, 1, 8, 6, 9]
a.sort()
a
Out[34]: [1, 3, 5, 6, 8, 9]

sort 排序可以传参数,key可以传len,表示按照长度排序。反向排序reverse=True:

a.sort(reverse=True)
a
Out[40]: [9, 8, 6, 5, 3, 1]

tuple 是不可变的 sequence,不能修改。用逗号分割一些值实际上就是创造了tuple,而单个值加逗号也可以创建tuple:

1,
Out[41]: (1,)
1,2,3
Out[42]: (1, 2, 3)

tuple 能在映射(dict)和集合的成员中作 key ,而 list 不行。
tuple 作为很多内建函数的返回值。

THE END

posted @ 2017-11-20 17:44  毛利小九郎  阅读(131)  评论(0编辑  收藏  举报