1.python基础
1.1输入与输出
输出
用print
加上字符串,就可以打印指定的文字或数字
>>> print ‘hello, world‘ hello, world >>> print 300 300 >>> print 100+200 300
print
语句也可以跟上多个字符串,用逗号“,”隔开,就可以连成一串输出:
>>> print ‘The quick brown fox‘, ‘jumps over‘, ‘the lazy dog‘ The quick brown fox jumps over the lazy dog >>> print ‘100+200 =‘, 100+200 100+200 = 300
输入
Python提供了一个raw_input
,可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:
>>> name = raw_input() Michael >>> name ‘Michael‘
raw_input()读取的内容永远以字符串的形式返回,可以用 int(), float()等强制转换数值类型
1.2 python语法
Python的语法比较简单,采用缩进方式,写出来的代码就像下面的样子:
# print absolute value of an integer: a = 100 if a >= 0: print a else: print -a
以#
开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号“:”结尾时,缩进的语句视为代码块。
1.3数据类型和变量
1. 用r‘‘
表示‘‘
内部的字符串默认不转义
>>> print ‘\\\t\\‘ \ >>> print r‘\\\t\\‘ \\\t\\
2. Python允许用‘‘‘...‘‘‘
的格式表示多行内容
>>> print ‘‘‘line1 ... line2 ... line3‘‘‘ line1 line2 line3
3. 当我们写
a = ‘ABC‘
时,Python解释器干了两件事情:
- 在内存中创建了一个
‘ABC‘
的字符串; - 在内存中创建了一个名为
a
的变量,并把它指向‘ABC‘
。
也可以把一个变量a
赋值给另一个变量b
,这个操作实际上是把变量b
指向变量a
所指向的数据,例如下面的代码:
>>>a = ‘ABC‘ >>>b = a >>>a = ‘XYZ‘ >>>print b ‘ABC‘
1.3字符串与编码
Python提供了ord()和chr()函数,可以把字母和对应的数字相互转换:
>>> ord(‘A‘) 65 >>> chr(65) ‘A‘
python中如果要添加汉子支持,需要在文件最开头添加
# coding: utf-8
在Python中,采用的格式化方式和C语言是一致的,用%
实现
常见的占位符有:
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
>>> ‘%2d-%02d‘ % (3, 1) ‘ 3-01‘ >>> ‘%.2f‘ % 3.1415926 ‘3.14‘ >>> ‘growth rate: %d %%‘ % 7 ‘growth rate: 7 %‘
1.4使用列表list和元组tuple
list [] 是一种有序的集合,可以随时添加和删除其中的元素。 索引从 0 - -1
>>> classmates = [‘Michael‘, ‘Bob‘, ‘Tracy‘] >>> classmates [‘Michael‘, ‘Bob‘, ‘Tracy‘] >>> len(classmates) # 链表长度 3 >>> classmates[-1] # 链表最后一个索引标记为-1 ‘Tracy‘ >>> classmates.append(‘Adam‘) # 扩充链表 >>> classmates [‘Michael‘, ‘Bob‘, ‘Tracy‘, ‘Adam‘] >>> classmates.insert(1, ‘Jack‘) # 插入链表元素 >>> classmates [‘Michael‘, ‘Jack‘, ‘Bob‘, ‘Tracy‘, ‘Adam‘] >>> classmates.pop(1) # 删除链表元素 ‘Jack‘ >>> classmates [‘Michael‘, ‘Bob‘, ‘Tracy‘] >>> classmates[1] = ‘Sarah‘ # 替换链表元素 >>> classmates [‘Michael‘, ‘Sarah‘, ‘Tracy‘]
list元素也可以是另一个list,比如:
>>> s = [‘python‘, ‘java‘, [‘asp‘, ‘php‘], ‘scheme‘] >>> len(s) 4
如果一个list中一个元素也没有,就是一个空的list,它的长度为0:
>>> L = [] >>> len(L) 0
tuple () 是另一种有序列表叫元组。tuple和list非常类似,但是tuple一旦初始化就不能修改了
只有1个元素的tuple定义时必须加一个逗号,
,来消除表达一个数的歧义:
>>> t = (1) >>> t 1 >>> t = (1,) >>> t (1,)
tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向‘a‘
,就不能改成指向‘b‘
,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
小结
list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们。
1.5 使用字典dict和集合set
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
>>> d = {‘Michael‘: 95, ‘Bob‘: 75, ‘Tracy‘: 85} >>> d[‘Michael‘] 95
要避免key不存在的错误,有两种办法,一是通过in
判断key是否存在:
>>> ‘Thomas‘ in d False
二是通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:
>>> d.get(‘Thomas‘) >>> d.get(‘Thomas‘, -1) -1
要删除一个key,用pop(key)
方法,对应的value也会从dict中删除:
>>> d.pop(‘Bob‘) 75 >>> d {‘Michael‘: 95, ‘Tracy‘: 85}
请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。
和list比较,dict有以下几个特点:
- 查找和插入的速度极快,不会随着key的增加而增加;
- 需要占用大量的内存,内存浪费多。
而list相反:
- 查找和插入的时间随着元素的增加而增加;
- 占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。
注意:dict的key必须是不可变对象。
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合,且重复元素在set中自动被过滤:
>>> s = set([1, 1, 2, 2, 3, 3]) >>> s set([1, 2, 3])
通过add(key)
方法可以添加元素到set中,可以重复添加,但不会有效果:
>>> s.add(4) >>> s set([1, 2, 3, 4]) >>> s.add(4) >>> s set([1, 2, 3, 4])
通过remove(key)
方法可以删除元素:
>>> s.remove(4) >>> s set([1, 2, 3])
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
>>> s1 = set([1, 2, 3]) >>> s2 = set([2, 3, 4]) >>> s1 & s2 set([2, 3]) >>> s1 | s2 set([1, 2, 3, 4])
set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”
小结
使用key-value存储结构的dict在Python中非常有用,选择不可变对象作为key很重要,最常用的key是字符串。
tuple虽然是不变对象,但试试把(1, 2, 3)
和(1, [2, 3])
放入dict或set中,并解释结果。