二周一次课(10月23日)


一、学习python 列表的常用方法
列表是由一序列特定顺序排列的元素组成的。可以把字符串,数字,字典等任何东西加入到列表中,其中的元素之间没有任何关系。列表也是自带下标的,默认也是从0开始。

l = ['a', 'b', 'c', 'abc', 1, 2, 3]
print type(l)
print(dir(l))

append,list的末尾增加一个元素

l = ['a', 'b', 'c', 'abc', 1, 2, 3]
print(l)
l.append('hello')
print(l)

结果:

['a', 'b', 'c', 'abc', 1, 2, 3]
['a', 'b', 'c', 'abc', 1, 2, 3, 'hello']

pop,末尾删除一个list元素

l = ['a', 'b', 'c', 'abc', 1, 2, 3]
l.pop()
print(l)

结果:

['a', 'b', 'c', 'abc', 1, 2]

index,符合条件的list下标

l = ['a', 'b', 'c', 'abc', 1, 2, 3]
print(l.index('abc'))

结果:

3

insert,插入list中一个元素
格式:insert(index,object)--insert object before index

l = ['a', 'b', 'c', 'abc', 1, 2, 3]
l.insert(2, '321')
print(l)

结果:

['a', 'b', '321', 'c', 'abc', 1, 2, 3]

remove,删除list一个元素
格式:L.remove(value) --remove first occurrence of value.

l = ['a', 'b', 'c', 'abc', 1, 2, 3]
l.remove('abc')
print(l)

结果:

['a', 'b', 'c', 1, 2, 3]

reverse,list反序

l = ['a', 'b', 'c', 'abc', 1, 2, 3]
l.reverse()
print(l)

结果:

[3, 2, 1, 'abc', 'c', 'b', 'a']

sort,对list进行排序

l = ['a', 'b', 'c', 'abc', 1, 2, 3]
l.sort()
print(l)

结果:

[1, 2, 3, 'a', 'abc', 'b', 'c']


列表切片:
字符串、列表、元组在python中都符合“序列”这一特征,只要符合这一特征的变量我们都可以用切片(slice)去存取它们的任意部分。我们可以把序列想象成一个队列,我可能需要前面三位。后面三位、或者从第三位后的四位、或者隔一个取一个等,我们用切片操作符来实现上述要求。
切片操作符在Python中的原型是:
[start:stop:step]
即:[开始索引:结束索引:步长值]
开始索引:同其它语言一样,从0开始。序列从左向右方向中,第一个值得索引为0,最后一个为-1
结束索引:切片操作符将取到该索引为止,不包含该索引的值。
步长值:默认是一个接着一个切取,如果为2,则表示进行隔一取一操作。步长值为正时表示从左向右取。如果为负,则表示从右向左取。步长值不能为0.

l = ['a', 'b', 'c', 'abc', 1, 2, 3]
print(l[1:5:2])

结果:

['b', 'abc']


二、学习python的集合和方法
元组tuple是不可变的list,tuple和list有些差别

1.Tuple的定义形式

t = ('a', 'b', 'c', 'abc', 1, 2, 3)
print(dir(t))
print(type(t))

tuple唯一和list的区别是[]变成了(),其他没有什么变化,tuple不能增加和减少,它本身自己的方法很少,只有count和index两个方法,其他的list方法都不可用。


2.Tuple单个元素
Tuple在表示单个元素的时候,是比较特别的,我们需要特别注意,要不然很容易犯一个错误,即:

a = (1,)
b = 'abc'
print(type(a))
print(type(b))

结果:

<type 'tuple'>
<type 'str'>

由上面的例子可以知道,tuple在表示单个元素的时候,必须用,进行分离,否则python解析器不会认为是元组。


3.Tuple的方法
'count',统计某个元素的个数

t = ('a', 'b', 'c', 'abc', 1, 2, 3)
print(t.count('a'))

结果是:

1

'index',返回某个元素的下标
T.index(value,[start, [stop]])  -> integer -- return first index of value.

t = ('a', 'b', 'c', 'abc', 1, 2, 3)
print(t.index('abc'))

结果是:

3

三、学习python的字典和方法

字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中,字典赋值有三种方式:

k = {'name': 'wan yang', 'age': '25', 123: 'abc'}
d = dict(a=1, b=2, c=3)
d = dict([('name', 'yang'), ('age', 20)])

字典有很多常用的方法:
get()  获得key对应的value值

k = {'name': 'wan yang', 'age': '25', 123: 'abc'}
print(k.get('name'))

结果:

wan yang

setdefault  通过给定的key,查找对应的value,如果给定的可以在字典中无,则返回None,同时在字典中增加'test': None键值对

k = {'name': 'wan yang', 'age': '25'}
k.setdefault('height', '170')
k.setdefault('tel')
print(k)

结果:

{'age': '25', 'tel': None, 'name': 'wan yang', 'height': '170'}

keys()、values() 以列表的形式返回字典的所有键或者值

k = {'name': 'wan yang', 'age': '25', 123: 'abc'}
print(k)
print(k.keys())
print(k.values())

{'age': '25', 123: 'abc', 'name': 'wan yang'}
['age', 123, 'name']
['25', 'abc', 'wan yang']


iteritems()

功能:返回字典所有元素的迭代器

iterkeys()

功能:返回字典所有keys的迭代器

itervalues()

功能:返回字典所有values的迭代器

d = {'name': 'Tom', 'age': '22'}
for i in d.iteritems():
    print i
for i in d.iterkeys():
    print i
for i in d.itervalues():
    print i

结果:

('age', '22')
('name', 'Tom')
age
name
22
Tom

update() 更新增加字典的键值

d = {'name': 'Tom', 'age': '22'}
d2 = {'height': 170, 'tel': 110}
d.update(d2)
print d

结果:

{'age': '22', 'tel': 110, 'name': 'Tom', 'height': 170}

fromkeys 用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值

d = [1, 2, 3]
dict = {}
dict = dict.fromkeys(d)
print dict  # {1: None, 2: None, 3: None}
dict = dict.fromkeys(d, 'xiaodeng')  # xiaodeng为默认值
print dict  # {1: 'xiaodeng', 2: 'xiaodeng', 3: 'xiaodeng'}

结果:

{1: None, 2: None, 3: None}
{1: 'xiaodeng', 2: 'xiaodeng', 3: 'xiaodeng'}

zip  把两个列表合并成一个字典

l = ['name', 'age']
l1 = ['Tom', '22']
print(zip(l, l1))

结果:

[('name', 'Tom'), ('age', '22')]

对字典的增加操作

d = {'name': 'Tom', 'age': '22'}
d['sex'] = 'man'
print d

结果:

{'age': '22', 'name': 'Tom', 'sex': 'man'}

对字典的修改操作

d={'name': 'Tom', 'age': '22'}
d['age'] = '11'
print d

结果:

{'age': '11', 'name': 'Tom'}

pop()  删除key:value对

k = {'name': 'wan yang', 'age': '25', 123: 'abc'}
k.pop(123)
print(k)

结果:

{'age': '25', 'name': 'wan yang'}


对字典进行排序:
按照value进行排序

mm = dict(a=1, b=10, c=3, d=9)
print sorted(mm.iteritems(), key=lambda d:d[1], reverse=True)

[('b', 10), ('d', 9), ('c', 3), ('a', 1)]