1、连接两个序列
>>> a = [1, 3, 4]>>> b = [4, 5, 6]
>>> a + b
[1, 3, 4, 4, 5, 6]
>>> a.extend(b)
[1, 3, 4, 4, 5, 6]
>>> a.append(b)
[1, 3, 4, 4, 5, 6, [4, 5, 6]]
上面的实验,采用了+、extend、append三种方法,其中+和expend功能一样,将两个序列合并为一个序列,但是extend效率会高一些。append则将b作为a的一个元素
2、重复序列
>>> b
[4, 5, 6]
>>> b*3
[4, 5, 6, 4, 5, 6, 4, 5, 6]
3、序列切片
- 0 ~ len-1或者-len ~ -1,序列下表可以有两个维度,正索引和负索引
- 切片操作是左闭右开区间
- 第1或第2个参数如果不写,则表示最开始或到最结束
- 第3个参数表示步长
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> len(a)
10
>>> a[0]
0
>>> a[-10]
0
>>> a[1:]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[:1]
[0]
>>> a[0:9:2]>>>>>>>>>步长操作
[0, 2, 4, 6, 8]
>>> a[::-1]>>>>>>>>>>翻转操作
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a[::2]>>>>>>>>>>隔一个取一个
[0, 2, 4, 6, 8]
>>> a[::3]
[0, 3, 6, 9]
>>> range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(0, 10, 2)
[0, 2, 4, 6, 8]
>>> range(-1, -10, -1)
[-1, -2, -3, -4, -5, -6, -7, -8, -9]
4、for else语句:
如果在for语句中,没有被break出来,else语句的内容将被执行
5、字符串操作:
- 切片,和序列切片是一样一样的,不赘述了
- in 和 not in
- string 模块,有些有用的字符串常量,string.letters,string.digits等等。
- 字符串连接+, join,split的使用。看下面例子。
- ‘、“、’‘’区别,参见http://blog.youkuaiyun.com/beginning1126/article/details/17334891
- 格式化操作符%,print "%d, %s" % (12, 12)
- cmp,按照字符串的ASCII码进行比较,参数1小于参数2,则返回-1,否则返回1
- max, min返回字符串序列ASCII码最大和最小字符
- enumerate,
- zip,合并两个list,形成元组list
>>> a
['11', '22', '33']
>>> ' '.join(a)
'11 22 33'
>>> b = '+'.join(a)
>>> b
'11+22+33'
>>> c = b.split('+')
>>> c
['11', '22', '33']
>>> str2 = 'xyz'
>>> cmp(str1, str2)
-1
>>> cmp(str2, str1)
1
>>> for i, t in enumerate(s):
... print i, t
...
0 a
1 b
2 c
3 d
4 e
5 f
>>> t = 'abc'
>>> zip(s,t)
[('1', 'a'), ('2', 'b'), ('3', 'c')]
- 元组是只读的,这点和字符串很像,不能修改元组某一个元素,也不能把元组切片作为左值;
- 要修改元组,只能重新创建新的元组;
- 连接操作 +,重复操作 *,仍然是可以的;
- 如果元组里,某个元素是列表,ok,这个列表是可以直接通过访问下标直接改变的;
- return 1, 2, 3,返回的这个东西,会默认为什么类型变量呢,没错,元组,所有多对象的,用逗号分隔的,没有明确定义的,都默认为元组;
- 单元素元组,(1),返回的是int型1,不是元组,只有定义成(1,)才会返回元组;
- 什么时候会用到元组呢,一个不可变的列表,难道不觉得奇怪吗,如果想把某个参数传给某个陌生api,为了防止此api改变参数,在传入之前,强转成元组是个好方法。
hubby = person[:] # slice copy
wifey = list(person) # fac func copy
print [id(x) for x in person, hubby, wifey]
print [id(x) for x in person]
print [id(x) for x in hubby]
print [id(x) for x in wifey]
print person, hubby, wifey
print "==========================================="
hubby[0] = 'joe'
wifey[0] = 'jane'
hubby[1][1] = 50.00
print [id(x) for x in person, hubby, wifey]
print [id(x) for x in person]
print [id(x) for x in hubby]
print [id(x) for x in wifey]
print person, hubby, wifey
print "==========================================="
import copy
person = ['name', ['savings', 100.00]]
hubby = copy.deepcopy(person)
wifey = copy.deepcopy(person)
print [id(x) for x in person, hubby, wifey]
print [id(x) for x in person]
print [id(x) for x in hubby]
print [id(x) for x in wifey]
print person, hubby, wifey
print "==========================================="
hubby[0] = 'joe'
wifey[0] = 'jane'
hubby[1][1] = 50.00
print [id(x) for x in person, hubby, wifey]
print [id(x) for x in person]
print [id(x) for x in hubby]
print [id(x) for x in wifey]
print person, hubby, wifey
[11191456, 12299360]
[11191456, 12299360]
[11191456, 12299360]
['name', ['savings', 100.0]] ['name', ['savings', 100.0]] ['name', ['savings', 100.0]]
===========================================
[12277880, 12309448, 12311808]
[11191456, 12299360]
[12510560, 12299360]
[12294208, 12299360]
['name', ['savings', 50.0]] ['joe', ['savings', 50.0]] ['jane', ['savings', 50.0]]
===========================================
[12349968, 12277880, 12309448]
[11191456, 12349928]
[11191456, 12350248]
[11191456, 12350328]
['name', ['savings', 100.0]] ['name', ['savings', 100.0]] ['name', ['savings', 100.0]]
===========================================
[12349968, 12277880, 12309448]
[11191456, 12349928]
[12510560, 12350248]
[12294208, 12350328]
['name', ['savings', 100.0]] ['joe', ['savings', 50.0]] ['jane', ['savings', 100.0]]