数据类型
numbers
运算
-
"+",加,返回操作数中精度最高的类型
-
"-",减,返回操作数中精度最高的类型
-
"*",乘,返回操作数中精度最高的类型
-
"/" ,除,返回float,保留小数,20/4=5.0
-
"//",除,返回int,不保留小数,20//4=5
-
"**",乘方,返回操作数中精度最高的类型,2 ** 7=128
-
"%",取余,返回操作数中精度最高的类型,4%1.5=1.0
-
"&",按位与,5&3=1(101&011=001)
-
"^",按位异或,5 ^ 3=6(101^011=110)
-
"|",按位或,5|3=7(101|011=111)
-
" ~ ",按位反转,~3=-4
-
">>",右移,5>>1=2### numbers
运算
-
"+",加,返回操作数中精度最高的类型
-
"-",减,返回操作数中精度最高的类型
-
"*",乘,返回操作数中精度最高的类型
-
"/" ,除,返回float,保留小数,20/4=5.0
-
"//",除,返回int,不保留小数,20//4=5
-
"**",乘方,返回操作数中精度最高的类型,2 ** 7=128
-
"%",取余,返回操作数中精度最高的类型,4%1.5=1.0
-
"&",按位与,5&3=1(101&011=001)
-
"^",按位异或,5 ^ 3=6(101^011=110)
-
"|",按位或,5|3=7(101|011=111)
-
" ~ ",按位反转,~3=-4
-
">>",右移,5>>1=2
-
"<<",左移,5<<2=20
集合
注意: 集合是指包含一组元素的数据结构(区别于set,在此仅指抽象的概念),我们已经介绍的包括:
- 有序集合:list,tuple,str和unicode;
- 无序集合:set
- 无序集合并且具有 key-value 对:dict
常见功能:索引、分片、嵌套、遍历、构造表达式(没找到中文解释,暂时这样称呼)
str
字符串,形式为s="apple"或s='apple'
""" xxx """ 或 ''' xxx ''' 都可表示注释
n*str,表示str重复n次(n大于0)
索引
str[2],表示str中索引为2的字符
str[-1],表示str中倒数第一个字符,无-0索引
str[i],如果i超出索引,会抛异常
切片
str[0:2],表示str按照[0,2)截取,即截取索引为0和1的字符串
str[:3],表示str按照[0,3)截取
str[3:],表示str按照[3,length-1)截取,所以str[:i]+str[i:]和str是等价的
str[i:],如果i超出索引,会返回空串''
str[3:i],如果i超出索引,返回的结果和str[3:]一样
str在Python中不可更改
list
数组,形式为list=[3,0,34,2,10]
索引
list[0],索引为0的元素,返回3
切片
list[:],所有元素,返回[3,0,34,2,10]
list[1:],索引1到最后的元素,返回[0,34,2,10]
list[:2],索引0到1的元素,返回[3,0]
list[-2:],末尾2个元素,返回[2,10]
list[::2],前两个参数为空,第三个不为空,第三个为步长,表示从[0,len-1)中以2为步长取出元素,返回[3,34,10]
数组内容可更改,list[2:]=[],结果list=[3,0];list.append(2**3),结果list=[3,0,34,2,10,8]
嵌套
数组可嵌套,即可为多层数组
元素增删
list.pop(),删除末尾元素。
list.pop(3),删除索引为3的元素。
list.remove(3),删除值为3的首个元素。。
del list[3],删除索引为3的元素。
list.append(10),末尾添加元素10。
list.insert(2,10),在索引为2的元素前插入10,即10放在索引为2的位置。
list.extend([12,45]),拓展数组,在末尾添加[12,45]。
元素类型转换
enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple
for index, name in enumerate(L):
print index, '-', name
数组解析提供了一些简洁的构造方法:
squares = [x**2 for x in range(10)]
# squares=[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
squares = [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
# squares=[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
数组可嵌套方法和复杂的表达式,即构造表达式:
list = [str(round(pi, i)) for i in range(1, 6)]
# list=['3.1', '3.14', '3.142', '3.1416', '3.14159']
tuple
元组,形式:t=(34,1,54)
元组不可修改,可嵌套
元组定义时可打包元素: t=12,'cool','beauty'
相反,元素也可打包到元组: 12,'cool','beauty'=t
单个元素的元组,定义时若不加括号,需加一个逗号,输出结果时括号内末尾含有一个逗号
singleton = 'hello', #singleton变为('hello',)
索引、切片
和list相同
set
集合,形式为
basket = {'apple', 'orange', 'pear', 'banana'}
无序,元素不重复
数学运算
- 并集,set1|set2
- 差集,set1-set2
- 交集,set1&set2
- 对称差,取非公有的所有元素,set1^set2
关系运算
- 等于,set1**set2
- 不等于,set1!=set2
- 属于,set1 in set2
- 不属于,set1 not in set2
与list一样,set支持构造表达式
a = {x for x in 'abracadabra' if x not in 'abc'} #结果a={'r','d'}
dictionary
字典,键值对形式元素,通过键来查找值
tel = {'jack': 4098, 'sape': 4139}
字符串和数字可作为键
添加元素:
tel['guido'] = 4127
检验一个key是否在一个字典中:
'guido' in tel # 得到true
得到所有的键:
# 得到['jack','sape']
list(tel.keys())
得到所有的值:
# 得到[4098,4139]
list(tel.values())
得到所有的元素:
tel.items()
keys()、values()和items(),都可将结果装进一个list中
dict()可将一个键值对形式的序列转化成字典
dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) #得到{'sape': 4139, 'jack': 4098, 'guido': 4127}
字典支持内嵌表达式:
{x: x**2 for x in (2, 4, 6)} #得到{2: 4, 4: 16, 6: 36}
字典遍历:
knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.items():
print(k, v)
range
range(10),生成0到10(索引)的值,即0,1,2,3,4,5,6,7,8,9
range(2,5),生成2到5(索引)的值,即2,3,4
range(0,10,3),生成0到10(索引)的值,步长为3,即0,3,6,9
range是一个object,非list
list(range(3)),根据range(3)生成一个list数组,得[0,1,2]
- "<<",左移,5<<2=20
集合
注意: 集合是指包含一组元素的数据结构(区别于set,在此仅指抽象的概念),我们已经介绍的包括:
- 有序集合:list,tuple,str和unicode;
- 无序集合:set
- 无序集合并且具有 key-value 对:dict
常见功能:索引、分片、嵌套、遍历、构造表达式(没找到中文解释,暂时这样称呼)
str
字符串,形式为s="apple"或s='apple'
""" xxx """ 或 ''' xxx ''' 都可表示注释
n*str,表示str重复n次(n大于0)
索引
str[2],表示str中索引为2的字符
str[-1],表示str中倒数第一个字符,无-0索引
str[i],如果i超出索引,会抛异常
切片
str[0:2],表示str按照[0,2)截取,即截取索引为0和1的字符串
str[:3],表示str按照[0,3)截取
str[3:],表示str按照[3,length-1)截取,所以str[:i]+str[i:]和str是等价的
str[i:],如果i超出索引,会返回空串''
str[3:i],如果i超出索引,返回的结果和str[3:]一样
str在Python中不可更改
list
数组,形式为list=[3,0,34,2,10]
索引
list[0],索引为0的元素,返回3
切片
list[:],所有元素,返回[3,0,34,2,10]
list[1:],索引1到最后的元素,返回[0,34,2,10]
list[:2],索引0到1的元素,返回[3,0]
list[-2:],末尾2个元素,返回[2,10]
list[::2],前两个参数为空,第三个不为空,第三个为步长,表示从[0,len-1)中以2为步长取出元素,返回[3,34,10]
数组内容可更改,list[2:]=[],结果list=[3,0];list.append(2**3),结果list=[3,0,34,2,10,8]
嵌套
数组可嵌套,即可为多层数组
元素增删
list.pop(),删除末尾元素。
list.pop(3),删除索引为3的元素。
list.remove(3),删除值为3的首个元素。。
del list[3],删除索引为3的元素。
list.append(10),末尾添加元素10。
list.insert(2,10),在索引为2的元素前插入10,即10放在索引为2的位置。
list.extend([12,45]),拓展数组,在末尾添加[12,45]。
元素类型转换
enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple
for index, name in enumerate(L):
print index, '-', name
数组解析提供了一些简洁的构造方法:
squares = [x**2 for x in range(10)]
# squares=[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
squares = [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
# squares=[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
数组可嵌套方法和复杂的表达式,即构造表达式:
list = [str(round(pi, i)) for i in range(1, 6)]
# list=['3.1', '3.14', '3.142', '3.1416', '3.14159']
tuple
元组,形式:t=(34,1,54)
元组不可修改,可嵌套
元组定义时可打包元素: t=12,'cool','beauty'
相反,元素也可打包到元组: 12,'cool','beauty'=t
单个元素的元组,定义时若不加括号,需加一个逗号,输出结果时括号内末尾含有一个逗号
singleton = 'hello', #singleton变为('hello',)
索引、切片
和list相同
set
集合,形式为
basket = {'apple', 'orange', 'pear', 'banana'}
无序,元素不重复
数学运算
- 并集,set1|set2
- 差集,set1-set2
- 交集,set1&set2
- 对称差,取非公有的所有元素,set1^set2
关系运算
- 等于,set1**set2
- 不等于,set1!=set2
- 属于,set1 in set2
- 不属于,set1 not in set2
与list一样,set支持构造表达式
a = {x for x in 'abracadabra' if x not in 'abc'} #结果a={'r','d'}
dictionary
字典,键值对形式元素,通过键来查找值
tel = {'jack': 4098, 'sape': 4139}
字符串和数字可作为键
添加元素:
tel['guido'] = 4127
检验一个key是否在一个字典中:
'guido' in tel # 得到true
得到所有的键:
# 得到['jack','sape']
list(tel.keys())
得到所有的值:
# 得到[4098,4139]
list(tel.values())
得到所有的元素:
tel.items()
keys()、values()和items(),都可将结果装进一个list中
dict()可将一个键值对形式的序列转化成字典
dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) #得到{'sape': 4139, 'jack': 4098, 'guido': 4127}
字典支持内嵌表达式:
{x: x**2 for x in (2, 4, 6)} #得到{2: 4, 4: 16, 6: 36}
字典遍历:
knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.items():
print(k, v)
range
range(10),生成0到10(索引)的值,即0,1,2,3,4,5,6,7,8,9
range(2,5),生成2到5(索引)的值,即2,3,4
range(0,10,3),生成0到10(索引)的值,步长为3,即0,3,6,9
range是一个object,非list
list(range(3)),根据range(3)生成一个list数组,得[0,1,2]