列表
>>> a = [1,2,3,4,5]
>>> a[0] #第一个元素
1
>>> a[-1] #倒数第一个元素
5
>>> a[0:4] # 从0到4下标所对应的元素
[1, 2, 3, 4]
>>> a[:-1] # 从0到倒数第一之前的元素
[1, 2, 3, 4]
>>> a[0:] # 从1到最后的元素
[1, 2, 3, 4, 5]
>>> a[0:5:2] # 从0到5 每2个元素为间隔
[1, 3, 5]
1.拷贝
>>> a_ref = a # 引用 a
>>> a[2] = 100
>>> a
[1, 2, 100, 4, 5]
>>> a_copy = a[:] # 拷贝
>>> a
[1, 2, 100, 4, 5]
2.追加
>>> a.append(300)
>>> a
[1, 2, 100, 4, 5, 300]
3.在下标1的位置插入50
>>> a.insert(1,50)
>>> a
[1, 50, 2, 100, 4, 5, 300]
4.排序
>>> a.sort()
>>> a
[1, 2, 4, 5, 50, 100, 300]
5.逆行排序
>>> a.reverse()
>>> a
[300, 100, 50, 5, 4, 2, 1]
6.引用
上面我们定义了 a_ref,虽然我们一直是对 a 进行操作,但是发现到这里打印的值都是一样的,因为他们引用的都是同一个地址空间
>>> a
[300, 100, 50, 5, 4, 2, 1]
>>> a_ref
[300, 100, 50, 5, 4, 2, 1]
但是我们输出 a 的 copy 还是最开始的,没有变的
>>> a_cppy
[1, 2, 100, 4, 5]
7.查看地址
>>> b = [a,a_ref,a_copy]
>>> b
[[300, 100, 50, 5, 4, 2, 1], [300, 100, 50, 5, 4, 2, 1], [300, 100, 50, 5, 4, 2, 1]]
>>> id(a)
4328794880
>>> id(a_ref)
4328794880
>>> id(a_copy)
4328795168
发现 a 和 a_ref的 id 都是一样的,而 copy 不一样。
8.加法
>>> a+[100,200]
[300, 100, 50, 5, 4, 2, 1, 100, 200]
>>>
9.乘法
>>> d=a*2
>>> d
[300, 100, 50, 5, 4, 2, 1, 300, 100, 50, 5, 4, 2, 1]
>>> a[0]=50
>>> a
[50, 100, 50, 5, 4, 2, 1]
>>> d
[300, 100, 50, 5, 4, 2, 1, 300, 100, 50, 5, 4, 2, 1]
发现乘以后 a 的值变了 而 d 的没变,d 不是引用
10.字符串、数字都是常量,一旦赋值不能改变
>>> s = 'abc'
>>> s[0] = 'c'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>>
元组
元组用括号表示
>>> a = (1,2,3)
>>> a
(1, 2, 3)
元组可以追加
>>> a+(1,2)
(1, 2, 3, 1, 2)
元组一旦赋值不能更改
>>> a[0]=50
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
字典
字典(dict)是一个关键词和值对应的数据结构 key-value
>>> d = {"zhangsna":14,"lici":20}
>>> d
{'lici': 20, 'zhangsna': 14}
访问字典
>>> a = {"kuzan": {"bucket": "file201503","meta": {"props": {"domains": ["file201503.b0.upaiyun.com"]}}
>>> a['kuzan']['bucket']
'file201503'
>>> a['kuzan']['meta']['props']['domains'][0]
'file201503.com'