数据类型

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,在此仅指抽象的概念),我们已经介绍的包括:

  1. 有序集合:listtuplestrunicode
  2. 无序集合:set
  3. 无序集合并且具有 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,在此仅指抽象的概念),我们已经介绍的包括:

  1. 有序集合:listtuplestrunicode
  2. 无序集合:set
  3. 无序集合并且具有 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]

posted @ 2017-07-09 22:37  _Arvin  Views(113)  Comments(0Edit  收藏  举报