3.1.2整数进制十进制、八进制、十六机制、二进制八进制
>>>0108
>>>0o108
>>>oct(10)
'012'
十六进制
>>>0x1016
>>>hex(20)
'0x14'二进制
>>>0b102
>>>bin(2)
'0b10'
3.1.3浮点数我们可以理解为小数,浮点型可以用十进制或科学计数法表示,在科学计数法中,e或E代表10,+(可以省略)或 - 表示指数的正负
>>> 1.0 / 1e-2
100.0
>>> 2.0 ** 5.0 // 7
4.0
3.1.4定义字符串单引号
>>>str = 'abc'
>>>type(str)<type 'str'>双引号
>>>str = "abc"
>>>type(str)<type 'str'>三重引号
>>>str = '''sdfdsfafdsfdsf'''
>>>type(str)<type 'str'>
3.1.5字符串是字符的序列字符串是若干字符的序列。你可以用方括号运算符逐一访问每个字符:
>>> fruit = 'banana'
>>> letter = fruit[1]
>>> print letter
在Python中,索引是从字符串头部算起的一个偏移量,从左到右第一个字母的偏移量为0
从右到左,第一个字母的偏移量为-1 索引可以是任何表达式,包括变量与运算符在内。但是,索引的值必须是整数,且索引可以为负数,从字符尾倒过来计算 3.1.6使用len函数得到字符串的长度len是内置函数,返回字符串的字符数:
>>> fruit = 'banana'
>>> len(fruit)
6
问题如何取得最后一个字符?3.1.7字符串分片字符串的一个片段称为切片
>>> s = 'Monty Python'
>>> print s[0:5]
Monty
>>> print s[6:12]
Python
[n:m] 返回字符串从第n到第m之间的字符,包括第一个字符,但不包括最后一个字符 如果忽略第一个索引值(冒号之前),切片就从字符串第一个字符开始计算。如果忽略第二个索引值,切片就计算到最后一个字符:
>>> fruit = 'banana'
>>> fruit[:3]
'ban'
>>> fruit[3:]
‘ana’
如果第一个索引值大于或等于第二个索引值导致空字符串,只会输出两个引号:
>>> fruit = 'banana'
>>> fruit[3:3] "
问题 fruit[:] 值为多少
3.1.8字符串是不可变的尝试改变字符串
>>>greeting = 'Hello, world!'
>>>greeting[0] = 'J‘TypeError: 'str' object does not support item assignment
>>>greeting = 'Hello, world!'
>>>new_greeting = 'J' + greeting[1:]
>>>print new_greetingJello, world!
3.1.9字符串的操作
in判断一个字符串是否在另一个字符串中
>>>'a' in 'banana'
True
>>>'seed' in 'banana'
False+拼接字符串
>>>a = 'abc'
>>>b = 'def'
>>>a + b
'abcdef‘
*
>>>'a' * 10
'aaaaaaaaaa'
>>>2 * 3
6
3.1.10字符串的方法find在一个字符串里查找子字符串,返回子串所在位置的最左端的索引
>>>s = 'this is a test'
>>>s.find('test')
10
join拼接字符串,将一个字符串插入一个字符序列
>>>a = ['1','2','3']
>>>'+'.join(a)
'1+2+3‘
>>>dir = '','usr','bin','env'
>>>'/'.join(dir)'/usr/bin/env'
replace返回字符串中所有匹配项均被替换后的字符串
>>>'hello world'.replace('hello','hi')
'hi world‘
split将字符串分割成序列
>>>'/usr/local/bin'.split('/')
['', 'usr', 'local', 'bin']
stripstrip返回去除字符串两侧指定的字符,默认去除空格
>>>s = ' abc '
>>>s.strip()
'abc'
4.1列表与字典
4.1.1列表即序列与字符串类似,列表是由若干值组成的序列。字符串中的值是字符;列表中的值可以是任何类型。列表中的值称为元素或数据项
>>> name = ['zhao','qian','sun','li']
>>> name ['zhao', 'qian', 'sun', 'li'] 4.1.2列表索引 列表元素的访问与字符串中字符的访问语法是一样的,使用方括号操作符。方括号内的表达式指定索引位置。请注意,索引从0开始:
>>> name[0]
'zhao‘
>>> name[-1]
'li‘
4.1.3列表是可变的与字符串不同,列表是可变的。你可以改变列表中元素的顺序,或者对列表中的元素重新赋值。当括号运算符出现在赋值语句的左边时,就可以给列表中指定的元素赋值
>>> numbers = [17, 123]
>>> numbers[1] = 5
>>> print numbers
[17, 5]
删除元素
>>>numbers = [17, 123]
>>>del numbers[0]
>>>numbers
[123]
4.1.4列表与字符串字符串是字符的序列,而列表是一系列值的序列
索引,分片,len,in,+,*同样适用于列表
4.1.5列表方法
append 追加新的列表对象
>>>name.append('jia')
>>>name['zhao', 'qian', 'sun', 'jia']
count统计列表中重复元素的个数
>>>name['zhao', 'qian', 'sun', 'jia']
>>>name.append('jia')
>>>name.count('jia')
2
extend 在列表末尾一次行追加另一个序列中多个值
>>>n = [1,2,3,4]
>>>name.extend(n)
>>>name['zhao', 'qian', 'sun', 'jia', 'jia', 1, 2, 3, 4]
index 在列表中找出摸个元素的索引值
>>> name ['zhao', 'qian', 'sun', 'jia', 'jia', 1, 2, 3, 4]
>>> name.index('zhao')
0
pop在列表移除指定索引的元素,默认移除最后一个
>>> name
['zhao', 'qian', 'sun', 'li', 'jia', 'jia', 1, 2, 3, 4]
>>> name.pop()
4
>>> name
['zhao', 'qian', 'sun', 'li', 'jia', 'jia', 1, 2, 3]
>>> name.pop(5)
'jia'
>>> name
['zhao', 'qian', 'sun', 'li', 'jia', 1, 2, 3]
4.1.6字典
字典很像列表,但更通用。列表中的索引位置必须为整数,而字典中索引几乎可以是任意类型,字典可看作是索引(这里称为键)的集合与值的集合之间存在的一种映射。每个键对应一个值,键与值之间的关系称之为键值对,有时也称为数据项
>>> d = {'zhao':80,'qian':90,'sun':85}
>>>d['qian']
90
4.1.7字典基本操作
len(d) 返回字典长度
d[k] 返回字典对应k的value
d[k] = v 将值v关联到k上
del d[k] 删除键值为k的项
k in d 检查是否含有键值为k的项
4.1.8字典方法
clear清除字典中所有项
>>>d{'sun': 85, 'zhao': 80, 'li': 99, 'qian': 100}
>>>d.clear()
>>>d{}copy返回一个相同的字典
>>>n = d.copy()
>>>n{'sun': 85, 'zhao': 80, 'qian': 90}fromkeys以给定的key创建创建字典
>>>{}.fromkeys(['name','age'])
{'age': None, 'name': None}
>>>{}.fromkeys(['name','age'],'unknown')
{'age': 'unknown', 'name': 'unknown'}
get一种更宽松的访问字典项的方法,直接访问字典不存在的项会出错
d = {'sun': 85, 'zhao': 80, 'li': 99, 'qian': 100}
d['su']
d.get('su')
d.get('sun')
has_key检查字典中是否含有给出的key,同 key in d
>>>d.has_key('zhao')Trueitems以列表的方式返回字典所有的项
>>>d.items()[(‘sun’, 85), (‘zhao’, 80), (‘qian’, 90)]iteritems返回一个迭代器对象
>>>t = d.iteritems()
>>>t.next()
('sun', 85)
keys和iterkeyskeys以列表的方式返回key,iterkeys返回迭代器
>>>d.keys()['sun', 'zhao', 'qian']
>>>t = d.iterkeys()
>>>t.next()
'sun‘
pop和popitempop弹出给定key的项的值,然后在字典中删除该项,popitem弹出最后一项{'sun': 85, 'zhao': 80, 'qian': 90}
>>>d.pop('sun')
85
>>>d.popitem()
('zhao', 80)
>>>d{'qian': 90}
setdefaultkey存在则获得关联的值,不存在则创建{'li': '99', 'qian': 90}
>>>d.setdefault('li','N/A')
'99'
>>>d.setdefault('jia','N/A')
'N/A'
>>>d{'jia': 'N/A', 'li': '99', 'qian': 90}
values和itervaules与keys iterkeys类似返回字典中的值
>>>d.values()
['N/A', '99', 90]
>>>t = d.itervalues()
>>>t.next()
'N/A'
5.1元组与文件
5.1.1元组元组是由若干值组成的一个序列,与列表非常相似。元组中存储的值可以是任何数据类型并拥有整数型索引。元组的一个重要特征是不可变的。
>>> t = 'a', 'b', 'c', 'd', 'e‘
t = ('a', 'b', 'c', 'd', 'e')
创建单个元素的元组,必须在末尾加一个逗号。
>>> t1 = ('a',)
大部分字符串,列表操作使用元组
索引,分片,len,in,+,*同样适用于元组5.1.2文件打开文件
>>> f = open('d:/test.txt')
>>> f <open file 'd:/test.txt', mode 'r' at 0x0000000003138390>读取文件
>>>f.read()
'this is a test\nopen text\nwrite text\nread text'
>>> f.readlines()
['this is a test\n', 'open text\n', 'write text\n', 'read text']
>>> f.readline()
'this is a test\n'写文件
>>> f =open('d:/test2.txt','w')
>>> f.write('hello world')
>>> f.close()
6.1引用与拷贝
6.1.1引用
>>>x = [1,2,3]
>>>y = x
>>>x[1]=4
>>>y[1, 4, 3]
>>>x[1, 4, 3]
可以说 Python 没有赋值,只有引用, Python 没有「变量」,我们平时所说的变量其实只是「标签」,是引用
6.1.2浅拷贝
>>>x[1, 4, 3]
>>>y = x[:]
>>>x[1] = 5
>>>x[1, 5, 3]
>>>y[1, 4, 3]
>>>a = [0,[1,2],3]
>>>b = a[:]
>>>a[0] = 8
>>>a[8, [1, 2], 3]
>>>b[0, [1, 2], 3]
>>>a[1][1] = 9
6.1.3深拷贝
>>>import copy
>>>a = [0,[1,2],3]
>>>b = copy.deepcopy(a)
>>>a[0] = 8
>>>a[1][1] = 9
7.1语句概述
7.1.1简单语句
简单语句包含在单一的一个逻辑行中赋值语句表达式语句
assert语句
pass语句
del语句
print 语句
yield 语句
raise语句
break语句
continue语句
import语句
7.1.2复合语句复合语句包含(多组)其它语句;它们以某种方式影响或者控制其它那些语句的执行。通常,复合语句跨越多行,虽然一条完整的复合语句可以用简洁的形式包含在一行之中条件语句if/elif/else循环语句forwhile异常语句try
8.1赋值语句与表达式语句字符串赋值spam = 'Spam'元组赋值 spam,ham = 'yum', 'YUM'列表赋值[spam, ham] = ['yum2', 'YUM2']序列赋值a,b,c,d = 'spam'表达式语句
在Python中,可以使用表达式作为语句(本身只占一行),通常在两种情况下用作表达式语句调用函数在交互模式下打印值