二进制:
bin( number ) # 十进制的数字转换成二进制
每一位0或者1所占的空间单位为bit(比特),这是计算机中最小的表示单位。 8bits = 1byte, 字节,最小的存储单位,1byte缩写为1B; 1KB = 1024B; 1MB = 1024KB; 1GB = 1024MB; 1TB = 1024GB。
字符编码:
ASCII: 占1个字节
GBK1.0 :占2个字节,能够用来同时表示繁体字和简体字,该编码标准兼容GB2312,共收录汉字21003个。 Windows系统中文版默认的是该编码。
Unicode编码:国际标准字符集,它将世界上每种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。Unicode(统一码、万国码)规定所有的字符和符号最少由16位来表示(2个字节),即: 2**16 = 65536;
UTF-8,是对Unicode编码的压缩和优化,它不再使用最少使用2个字节,而是将所有的字符和符号分类:ASCII码中的内容用1个字节保存,欧洲的字符用2个字节保存,亚洲的字符用3个字节保存;
Windows系统中文版默认的编码是GBK;
Mac OS\ Linux 系统默认编码是UTF-8。
Python的编码注释:
Python3的默认编码是UTF-8, 但Python2的默认编码是ASCII, 所以在Python2中写中文的时候要先声明编码为UTF-8,如下所示:
#!/usr/bin/python
# -*- coding: utf-8 -*-
还有另外两种声明方法可查看:https://www.python.org/dev/peps/pep-0263/
浮点数:
浮点数可理解为有理数。 但整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,而浮点数运算则有可能会有四舍五入的误差。Python默认的是17位精度,即小数点后16位,但这个精确度是越往后越不准确。不只Python,其他语言也有同样的问题,这和浮点数的存储结构有关。
数据类型 ---列表:
列表是一个数据的集合,集合内可以放任何数据类型,可对集合进行方便的增删改查操作。(列表的数据可重复。)
创建:
# 方法一: L1 = [ ] # 定义空列表 L2 = [ 'a', 'b', 'c', 'd' ] # 存4个值,索引为0~3 L3 = [ 'abc', [ 'def', 'ghi' ] ] # 嵌套列表 # 方法二: L1 = list( ) #空列表
查询:
list1 = [ 'a' , 'b', 'c', 'd', 'e', 'f', 'g', 1, 2 ] list1[ 2 ] # 通过索引值取值,用法:列表名[ index number ] # 输出结果为 'c' # 索引是从0开始。 list1[ -3 ] # 通过索引从列表右边开始取值 # 输出结果为 'g' #从右开始数第3个。
查询索引值:
list1 = [ 'a' , 'b', 'c', 'd', 'e', 'f', 'g', 1, 2 ] list1.index( 'd' ) #返回指定元素的索引值,用法:列表名.index( 列表值 ) # 从左往右开始找,找到第一个匹配的,如果列表有重复的数据, 它只能索引出第一个数据。 # 输出结果为3。
统计某个列表值的个数:
list1 = [ 'a' , 'b', 'c', 'd', 'e', 'f', 'g', 1, 2 ,2,2 , 2 ] list1.count( 2 ) # 统计列表元素的个数。用法:列表名.count(列表值) # 输出结果为 4 。
len(list) # 列表的长度 sum(list) # 数字列表求和
切片:
用法:列表名[ index1 : index2 ] # 从index1开始切,但只能切到index2前面的那个值, 顾头不顾尾。 list1 = [ 'a' , 'b', 'c', 'd', 'e', 'f', 'g', 1, 2 ] # 切1: list1[ 3: 5 ] #从index=3开始切,切到index5(但不包含index5的值) # 输出结果为 [ 'd', 'e' ] # 顾头不顾尾 # 切2:也可以这样切: list1[-5 : -1] #从倒数第5个开始往右切 # 输出结果为 ['e', 'f', 'g', 1] # 切3: # 由于顾头不顾尾原则,切2中切不下来最后一个值,想要切下来列表的最后一个值,可利用下面的方法: list1[-5 : ] # 直接冒号后面为空就能切下来最后一个数。 # 输出结果为 ['e', 'f', 'g', 1, 2] # 同理, 如果想从最前面的值开始切,也可以写成如下形式: list1[ : 3] #从第一个值开始切,冒号前面的索引值可以为空。 # 输出结果为 ['a', 'b', 'c'] 另外也可以这样切, list1[ : -3] # 输出结果为 ['a', 'b', 'c', 'd', 'e', 'f'] list1[ : ] # 这样就是从列表第1个切到最后一个(包含最后一个),相当于没切 # 注:切片只能从左往右切。 # 如果想隔几个切,利用这种方法: 列表名[ index1 : index2 : step ] # step为“步长”,就是隔多少个去切 list1 = [ 'a' , 'b', 'c', 'd', 'e', 'f', 'g', 1, 2 ] list1[ 1 : -1 : 2 ] #step为2,就是跳2个去切 # 输出结果为 ['b', 'd', 'f', 1] list1[ : : 3] #从第一个切到最后一个,跳3个去切 # 输出结果为 ['a', 'd', 'g']
添加:
# 1.追加: #用法: 列表名.append( 追加的内容 ) # 这种添加方式只是在列表的最后面追加了一个值。 list1 = [ 'a' , 'b', 'c', 'd', 'e', 'f', 'g', 1, 2 ] list1.append( 'ABC') #在列表结尾添加 'ABC' 列表list1则变成 ['a', 'b', 'c', 'd', 'e', 'f', 'g', 1, 2, 'ABC'] # 2. 插入: # 用法: 列表名.insert( 索引值,想插入的内容 ) # 在列表中把要插入的内容插到相应索引值的位置。 list1 = [ 'a' , 'b', 'c', 'd', 'e', 'f', 'g', 1, 2 ] list1.insert( 3, 'ABC') #在list1列表中,把'ABC' 插入到索引值为3的位置 # 列表list1则变成 ['a', 'b', 'c', 'ABC', 'd', 'e', 'f', 'g', 1, 2]
修改:
# 用法: 列表名[ index ] = 想改为的内容 list1 = [ 'a' , 'b', 'c', 'd', 'e', 'f', 'g', 1, 2 ] list1[ 2 ] = 'ABC # 列表list1则修改为 ['a', 'b', 'ABC', 'd', 'e', 'f', 'g', 1, 2]
# 批量修改:(不常用) list1 = [ 'a' , 'b', 'c', 'd', 'e', 'f', 'g', 1, 2 ] list1[ 1: 3] = 'Mike' # list1则修改为 ['a', 'M', 'i', 'k', 'e', 'd', 'e', 'f', 'g', 1, 2] # 把'Mike'分开添加到列表中,'Mike'多余的部分并没有把列表后面的值给覆盖。
删除:
list1 = [ 'a' , 'b', 'c', 'd', 'e', 'f', 'g', 1, 2 ] list1.remove('g') # 删除列表list1中的元素'g'; remove只能一个个删 , 如果元素有重复的,只删从左到右数的第1个元素。 list1.pop() # 返回列表最后一个元素,同时删除列表的最后一个元素 del list1[2] # 删除list1列表中索引值为2的元素;del 是全局性的删除,想删谁就删谁。del也可批量删, 如下: del list1[2:5] # 删除索引值为2、3、4 的元素
循环:
list1 = [ 'a' , 'b', 'c', 'd', 'e', 'f', 'g', 1, 2 ] # 语法: for i in list1: #for (in) 是一个循环语句, 这句话的意思是把列表中的每一个值取出来赋给i, i 是 临时变量 print( i ) # 循环打印list1中的元素
list(range(10)) == [0,1,2,3,4,5,6,7,8,9] # while 循环和for循环的区别: while循环可以是死循环,但for 循环是有边界的 。
排序:
语法: list.sort() # 注意:如果列表中既有int又有str, 则不能进行排序 L1 = [ 'c', 'A', 'b', 'a', 'x', 'z', 'e', 'y', 'n','m'] L1.sort() 的输出结果为 ['A', 'a', 'b', 'c','e' ,'m' ,'n' ,'x' ,'y' ,'z' ] #按照ASCII码由小到大排列
把列表倒过来:
L1 = [ 'c', 'A', 'b', 'a', 'x', 'z', 'e', 'y', 'n','m'] # L1.reverse()的输出结果为 ['m','n','y','e','z','x','a','b','A','c']
列表拼接:
#拼接方法1 n = [2, 1, 3] m= [ 'b ','c' , 'a' ] n+m # 结果为 [2, 1, 3, 'b ', 'c', 'a'] #拼接方法2 n.extend(m) # 输出结果为 [2, 1, 3, 'b ', 'c', 'a', 'b ', 'c', 'a'] # 把m列表添加到n列表中,是列表扩展的方法 # 注: n.extend(m) 是对列表n 进行拓展 ,把m列表的元素都加到n 中 ,这个函数没有返回值,看拓展结果需要查看列表n;效果类似于 n += m。
清空:
list.clear() # 把整个列表清空
附列表的一种用法如下:
lt = ['况咏蜜','北京',171,48,'13651054608'] name,city,height,weight,phone = lt print(name) # 输出结果: # 况咏蜜
赋值:
# 变量赋值: b = a # 把变量a的值赋给b, 但b指向的并不是变量a, 而是变量a所指向的值(内存地址),所以当变量a的值变化后, 变量b的值并不会发生变化。 # 但列表赋值不是这样。 # 列表赋值: list2 = list1 #把列表list1赋给列表list2, 但list2指向的并不是列表list1所指向的那个列表值,而是指向列表list1对应的内存地址, 所以当列表list1发生变化时, list2也会发生变化。解决这个问题就需要用到 list.copy(), copy能使两个变量互相独立。