0%

Python2.7基础

作为一个最初的学习笔记,用来帮助记忆与整理。课程来自慕课网
Python入门
最初灵感来源于对树莓派的兴趣,想用树莓派做一些有意思的事情,主要是想写一些与爬虫相关的有意思的程序,于是学习Python。看到了如何学习Python爬虫[入门篇]? 以及 优秀Python学习资源收集汇总(强烈推荐)作为启蒙。

1. 数据类型

2. List和Tuple类型

List:
list是一种有序的集合,可以随时添加和删除其中的元素。

  • 列表形式:L[,,,,]
  • 语句:L[0]~L[n-1] 或者倒数:L[-1], L[-2]等等
  • 插入语句:L.insert(2, 'Example') (在中间插入,后面的全部后移一格),或者L.appent() (加到List的末尾)
  • 删除语句:L.pop() (留空则删除最后一个元素,填序号则删除对应序号的元素)
  • 替换语句:直接赋值 L[0] = 'example'

Tuple:
tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。

  • 表示语句: t = ('Adam', 'Lisa', 'Bart')
  • 索引方式同List
  • 用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义:t(1,)

3. 条件判断和循环

age = 20  
if age >= 18:  
    print 'your age is', age  
    print 'adult'  
print 'END'

注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,上面的3,4行 print 语句就构成一个代码块(但不包括第5行的print)。如果 if 语句判断为 True,就会执行这个代码块。缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。

注意: if 语句后接表达式,然后用:表示代码块开始。
如果你在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车:
>>> age = 20
>>> if age >= 18:
… print ‘your age is’, age
… print ‘adult’

your age is 20
adult

使用if-else:

if age >= 18:
    print 'adult'
else:
    print 'teenager'

if-elif-else: 同if-else if-else,用法相同

for语句:
Python的 for 循环就可以依次把list或tuple的每个元素迭代出来:

L = ['Adam', 'Lisa', 'Bart']
for name in L:
    print name

注意: name 这个变量是在 for 循环中定义的,意思是,依次取出list中的每一个元素,并把元素赋值给 name,然后执行for循环体(就是缩进的代码块)。

while语句:
从 0 开始打印不大于 N 的整数:

N = 10
x = 0
while x < N:
    print x
    x = x + 1

while循环每次先判断 x < N,如果为True,则执行循环体的代码块,否则,退出循环。
在循环体内,x = x + 1 会让 x 不断增加,最终因为 x < N 不成立而退出循环。
如果没有这一个语句,while循环在判断 x < N 时总是为True,就会无限循环下去,变成死循环,所以要特别留意while循环的退出条件。

break退出循环:
用 for 循环或者 while 循环时,如果要在循环体内直接退出循环,可以使用 break 语句。
比如计算1至100的整数和,我们用while来实现:

sum = 0
x = 1
while True:
    sum = sum + x
    x = x + 1
    if x > 100:
        break
print sum

咋一看, while True 就是一个死循环,但是在循环体内,我们还判断了 x > 100 条件成立时,用break语句退出循环,这样也可以实现循环的结束。

continue继续循环:
在循环过程中,可以用break退出当前循环,还可以用continue跳过后续循环代码,继续下一次循环。
现在老师只想统计及格分数的平均分,就要把 x < 60 的分数剔除掉,这时,利用 continue,可以做到当 x < 60的时候,不继续执行循环体的后续代码,直接进入下一次循环:

for x in L:
    if x < 60:
        continue
    sum = sum + x
    n = n + 1

多重循环:

for x in ['A', 'B', 'C']:
    for y in ['1', '2', '3']:
        print x + y

4. Dict和Set类型

dict

什么是dict: 相当于一个字典,查询表,代码如下:

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}  

我们把名字称为 key,对应的成绩称为 value,dict就是通过 key 来查找 value。
花括号 {} 表示这是一个 dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。
由于dict也是集合,len() 函数可以计算任意集合的大小:
>>> len(d)
3

注意: 一个 key-value 算一个,因此,dict大小为3。
dict的特点:

  • dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。 而list的查找速度随着元素增加而逐渐下降。
    不过dict的查找速度快不是没有代价的,dict的缺点是 占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
    由于dict是按 key 查找,所以,在一个dict中,key不能重复。
  • dict的第二个特点就是 存储的key-value序对是没有顺序的! 这和list不一样:
      d = {
          'Adam': 95,
          'Lisa': 85,
          'Bart': 59
      }
    当我们试图打印这个dict时:
      print d
      {'Lisa': 85, 'Adam': 95, 'Bart': 59}

打印的顺序不一定是我们创建时的顺序,而且,不同的机器打印的顺序都可能不同,这说明dict内部是 无序 的,不能用dict存储有序的集合。

  • dict的第三个特点是 作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。
    可以试试用list作为key时会报什么样的错误。
    不可变这个限制仅作用于key,value是否可变无所谓:
      {
          '123': [1, 2, 3],  # key 是 str,value是list
          123: '123',  # key 是 int,value 是 str
          ('a', 'b'): True  # key 是 tuple,并且tuple的每个元素都是不可变对象,value是 boolean
      }
    最常用的key还是字符串,因为用起来最方便。

更新dict 我们可以随时往dict中添加新的 key-value。比如已有dict:

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}

要把新同学’Paul’的成绩 72 加进去,用赋值语句:

>>> d['Paul'] = 72

如果 key 已经存在,则赋值会用新的 value 替换掉原来的 value。

遍历dict 遍历dict和遍历list类似,都可以通过 for 循环实现。
直接使用for循环可以遍历 dict 的 key:
>>> d = { ‘Adam’: 95, ‘Lisa’: 85, ‘Bart’: 59 }
>>> for key in d:
… print key

Lisa
Adam
Bart
由于通过 key 可以获取对应的 value,因此,在循环体内,可以获取到value的值。

set

什么是set
dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。
创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素:
>>> s = set(['A', 'B', 'C'])
set的内容为:

1
2
>>> print s
set(['A', 'B', 'C'])

由于 set 的内部是无序的,所以打印出来的顺序可能和 list 是不同的。
set 不能包含重复的元素,所以当重复输入时,set 会自动去掉重复的元素。
访问 set
访问 set 只能用元素内容判断。例如:

1
2
3
4
5
6
7
8
9
>>> s = set(['Adam', 'Bart', 'Lisa', 'Paul'])
# 用 in 操作符判断
>>> 'Bart' in s
True
>>> 'Tom' in s
False
>>> 'bart' in s
False
# 区分大小写

所以可以存一些数据,在输入的时候判断输入是否有效。
遍历 set
使用 for 循环来遍历 set 元素

1
2
3
4
5
6
7
>>> s = set(['Adam', 'Lisa', 'Bart'])
>>> for name in s:
... print name
...
Lisa
Adam
Bart

5. 函数

6. 切片

7. 迭代

8. 列表生成式