几种变量:
list: classmates = ['Michael', 'Bob', 'Tracy']
tuple: classmates = ('Michael', 'Bob', 'Tracy')
dict: d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
set: s = set([1, 2, 3])
list
变量classmates
就是一个 list。
用len()
函数可以获得 list 元素的个数:
>>> len(classmates)
用索引来访问 list 中每一个位置的元素
>>> classmates[0]
len(classmates) - 1
,如果要取最后一个元素,除了计算索引位置外,还可以用
-1
做索引,直接获取最后一个元素,
-2
list 元素也可以是另一个 list,比如:
>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
追加
list 是一个可变的有序表,所以,可以往 list 中追加元素到末尾:
>>> classmates.append('Adam')
插入
比如索引号为1的位置:
>>> classmates.insert(1, 'Jack')
删除 list 末尾的元素
pop()
方法:
>>> classmates.pop()
删除
pop(i)
方法,其中i是索引位置:
>>> classmates.pop(1)
替换
可以直接赋值给对应的索引位置:
>>> classmates[1] = 'Sarah'
list排序:
>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']
切片
取前 3 个元素:>>> L[0:3]
,如果从0开始也可以省略0: >>> L[:3]
下标循环
使用enumerate
可以把list变为索引-元素对
for i, value in enumerate(['A', 'B', 'C']):
print i, value
Tuple
另一种有序列表叫元组:tuple。tuple 和 list 非常类似,但是 tuple 一旦初始化就不能修改
“可变的”tuple:
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
Dict
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
也可以通过key设定值>>> d['Adam'] = 67
判断key是否存在
(1)>>> 'Thomas' in d
(1)通过 dict 提供的 get 方法,如果 key 不存在,可以返回 None,或者自己指定的 value:
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
删除key
pop(key)
方法,对应的 value 也会从 dict 中删除:
>>> d.pop('Bob')
dict 是用空间来换取时间的一种方法。正确使用 dict 非常重要,需要牢记的第一条就是 dict 的 key 必须是不可变对象。
这是因为 dict 根据 key 来计算 value 的存储位置,如果每次计算相同的 key 得出的结果不同,那 dict 内部就完全混乱了。这个通过 key 计算位置的算法称为哈希算法(Hash)。要保证 hash 的正确性,作为 key 的对象就不能变。在 Python 中,字符串、整数等都是不可变的,因此,可以放心地作为 key。而 list 是可变的,就不能作为 key.
输入dict并遍历:
d={}
i=0
while i<=1:
name=raw_input('hey ')
value=raw_input('value')
d[name]=value
i=i+1
for i in d: #两种遍历方法
print "d[%s]=" % i,d[i]
for k,v in d.iteritems():
print k,v
set
set 和 dict 类似,也是一组 key 的集合,但不存储 value。由于 key 不能重复,所以,在 set 中,没有重复的 key。
要创建一个 set,需要提供一个 list 作为输入集合:
>>> s = set([1, 2, 3])
( 传入的参数[1, 2, 3]是一个 list , 重复元素在 set 中自动被过滤)
添加key:
通过add(key)方法可以添加元素到 set 中,>>> s.add(4)
删除key:
通过remove(key)方法可以删除元素,>>> s.remove(4)
交集、并集:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
set([2, 3])
>>> s1 | s2
set([1, 2, 3, 4])
##迭代