二进制、字符编码、浮点数、列表

二进制:

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能使两个变量互相独立。
Code your future.
原文地址:https://www.cnblogs.com/neozheng/p/8302156.html