目录:

一.字符编码

二.字符串格式化

三.进制转换

四.数据类型及其操作

1.int类

2.str类

五.格式转换

六.列表

七.元组

八.字典

.字符编码:

计算机由美国人发明,最早的字符编码为ASCII,只规定了英文字母数字和一些特殊字符与数字的对应关系。最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号

ascii用1个字节代表一个字符;

unicode常用2个字节代表一个字符,生僻字需要用4个字节;

UTF-8英文字母被编码成1个字节,汉字通常是3个字节有很生僻的字符才会被编码成4-6个字节。

例:

字母x,用ascii表示是十进制的120,二进制0111 1000

汉字中已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101。

字母x,用unicode表示二进制0000 0000 0111 1000,所以unicode兼容ascii,也兼容万国,是世界的标准

这时候乱码问题消失了,所有的文档我们都使用但是新问题出现了,如果我们的文档通篇都是英文,你用unicode会比ascii耗费多一倍的空间,在存储和传输上十分的低效

本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间:

字符

Ascll

Unicode

Utf-8

x

01000001

00000000 01000001

01000001

不能表示

01001110 00101101

11100100 10111000 10101101

从上面的表格还可以发现,UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。

ASCII:只能存英文和拉丁字符,一个字符占一个字节,8位

gb2312:只能存6700多个中文,1980年

gbk1.0:存2万多字符,1995年

gb18030:存27000中文,2000年

万国码:Unicode:utf-32  一个字符占4个字节

Utf-16  一个字符占2个字节,或两个以上。

Utf-8   一个英文用ASCII码来存,一个中文占3个字节

声明编码  -*- coding:utf-8 -*-

gbk默认不认识utf-8,utf-8是Unicode的一个子集

Unicode 默认向下兼容gbk等

python3内部默认是 unicode,文件默认编码是utf-8

阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII

ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit,8bit可以表示0-2**8-1种变化,即可以表示256个字符

ASCII最初只用了后七位,127个数字,已经完全能够代表键盘上所有的字符了(英文字符/键盘的所有其他字符),后来为了将拉丁文也编码进了ASCII表,将最高位也占用了

阶段二:为了满足中文和英文,中国人定制了GBK

GBK:2Bytes代表一个中文字符,1Bytes表示一个英文字符

为了满足其他国家,各个国家纷纷定制了自己的编码

日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里

阶段三:各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。如何解决这个问题呢???

说白了乱码问题的本质就是不统一,如果我们能统一全世界,规定全世界只能使用一种文字符号,然后统一使用一种编码,那么乱码问题将不复存在,

很多地方或老的系统、应用软件仍会采用各种各样的编码,这是历史遗留问题。于是我们必须找出一种解决方案或者说编码方案,需要同时满足:

1、能够兼容万国字符

2、与全世界所有的字符编码都有映射关系,这样就可以转换成任意国家的字符编码

这就是unicode(定长), 统一用2Bytes代表一个字符, 虽然2**16-1=65535,但unicode却可以存放100w+个字符,因为unicode存放了与其他编码的映射关系,准确地说unicode并不是一种严格意义上的字符编码表

很明显对于通篇都是英文的文本来说,unicode的式无疑是多了一倍的存储空间(二进制最终都是以电或者磁的方式存储到存储介质中的)

阶段四:于是产生了UTF-8(可变长,全称Unicode Transformation Format),对英文字符只用1Bytes表示,对中文字符用3Bytes,对其他生僻字用更多的Bytes去存。

. Python 字符串格式化

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

格式输出汇总:

 #第一种
val = "我叫%s,今年%d岁,身高%d"%('zrh',20,175)
print(val) #运行结果:我叫zrh,今年20岁,身高175
#第二种
val = "我叫{0},今年{1}岁,身高{2},我弟弟身高也是{2}"
val1 = val.format("zrh",20,175)
print(val1) #运行结果:我叫zrh,今年20岁,身高175,我弟弟身高也是175
#第三种
v = input("your name:") #用户输入姓名
val = "我叫{name},今年{age}岁,身高{height}"
val1 = val.format(name=v,age="",height="") #name = v是用户输入的那个姓名
print(val1)
#第四种
val = "我叫{name},今年{age}岁"
dic1 = {"name":"zrh","age":20}
val1 = val.format(**dic1)
print(val1)
#第五种
name = "我叫{name},年龄{age}"
val = name.format_map({'name':'海角','age':18}) #只有一种写法,里面必须是字典
print(val)

如果在格式化输出中想要输出%号,就要用到%%格式

例如:

print("我是%s,我的进度已经完成80%%" %('zrh'))

输出结果:

我是zrh,我的进度已经完成80%

.进制转换

进制也就是进制位,我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢2进一位,十进制也就是我们常用的0-9是逢10进一位,16进制的10-15用A、B、C、D、E、F来表示。

1. 十进制转二进制

方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。

2. 二进制转十进制

方法为:把二进制数按权展开、相加即得十进制数。

第一个的1*2的7次方,是因为数位就是8位,8-1=7,依此类推。

. 数据类型

Python有五个标准的数据类型:

Numbers(数字) V = 1 int类

Boolean value(布尔值) V = True (bool类)

String(字符串) V = “Good” (str类)

List(列表) V = [“good”,”best”] (list类)

Tuple(元组) V = (“good”,”best”) (tuple类)

Dictionary(字典) V = {“name”:”zrh”,”age”:20} (dict类)

1.int类(记住一个)

bit_length()表示当前十进制数用二进制数表示时,最少使用的位数。

代码示例:

count = 16
v = count.bit_length()
print(v,"---",count)

输出结果:

5 --- 16

注意:

 count = ""
count1 = ""
print(count+count1) #输出结果:12 字符串的加法是拼接的作用
count2 = 1
count3 = 2
print(count2+count3) #输出结果:3 数字的加法是加法作用
#需求,输入一个数字,然后每个数字相加,列入输入152,结果就是1+5+2
count4 = "" #在数字和字符串中只有字符串才可以遍历,所以要把count4转为str类型
val = 0
for i in range(len(count4)):
val += int(count4[i]) #count4[i]是字符串,所以要转为数字才能相加
print(val) 

浮点数:

2.str类

对于字符串,执行内置命令后,原来的值不变。

2.1:upper()转换字符串中的小写字母为大写

代码示例:

name = "zrh"
v = name.upper()
print(v,"---",name)

输出结果:

ZRH --- zrh

2.2:lower()转换字符串中所有大写字符为小写

代码示例:

name = "ZrH"
v = name.lower()
print(v,"---",name)

输出结果:

zrh --- ZrH

2.3:capitalize()将字符串的第一个字符转换为大写

代码示例:

name = "zrh"
v = name.capitalize()
print(v,"---",name)

输出结果:

Zrh --- zrh

2.4:strip()去除首尾的内容 空格、换行符、制表符、指定内容

代码示例:

name = " zrh "
v = name.strip()
print(v+"---",name)

输出结果:

zrh---  zrh

 name_1 = "\tzrh\t"
print(name_1)
print(name_1.strip())

输出结果:

zrh

zrh

 name_1 = "zrh"
print(name_1)
print(name_1.strip("h"))

输出结果:

zrh
zr

2.5:lstrip()截掉字符串左边的空格或指定字符

2.6:rstrip()删除字符串字符串末尾的空格

2.7:replace(str1, str2 , max)将字符串中的 str1 替换成 str2,如果max指定,则替换不超过max次

代码示例:

content = "人生自古谁无死,早死晚死都得死"
v = content.replace("死","*",2)
print(v,"---",content)

输出结果:

人生自古谁无*,早*晚死都得死 --- 人生自古谁无死,早死晚死都得死

2.8: len(string)返回字符串长度

代码示例:

content = "人生自古谁无死,早死晚死都得死"
v = len(content)
print(v)

输出结果:

15

2.9:[]根据索引取值

代码示例:

#索引值从0开始计算不是从1
content = "人生自古谁无死,早死晚死都得死"
v = content[0] #取字符串的第一个字符
v1 = content[-1] #-代表从后往前找,1代表第一个,所以-1代表正向的最后一个
v2 = content[0:5] #从0开始取到索引值为4的对象,不包括索引值为5的对象,相当于数学中的左闭右开区间
v3 = content[8:] #从索引值为8的对象开始取到最后一个
v4 = content[0:15:2] #从0开始隔一个取一个,一直取到14,2表步长表示隔一个取一个,3就表示隔2个
print(v,v1,v2,v3,v4)

输出结果:

人 死 人生自古谁 早死晚死都得死 人自谁死早晚都死

2.10 :split(“str”,num)  ()里没有参数的话,默认是空格

以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串

代码示例:

content = "人生自古谁无死,早死晚死都得死"
v = content.split("死",2)
print(v)

输出结果:

['人生自古谁无', ',早', '晚死都得死']

2.11 :.isdecimal()判断当前字符串中是否全部都是数字

代码示例:

v = "a123"
c = v.isdecimal()
print(c)

输出结果:

False

补充:

python中isdigit()、isdecimal()和isnumeric的区别  

a = "good 1 night 2"
a.isdecimal() #如果a中只有十进制字符,则返回True,否则为False
a.isdigit() #如果a中的所有字符都是数字,并且在S中至少有一个字符,则返回True
a.isnumeric() #如果a中只有数字字符,则返回True,否则为False

2.12 :join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

seq里的元素必须是字符串,不能是数字,数字和字符串(前面的“_”)不能相加,

代码示例:

list1 = ['alex','zrh','sdv']
a = '_'.join(list1) #这里的_就表示用_连接
b = "".join(list1) #""里什么都没有表示直接连接
print(a)
print(b)

输出结果:

alex_zrh_sdv

alexzrhsdv

2.13:把字符串转换成字节encode()

name = "天下"
name.encode("utf-8") #把字符串(Unicode)转换成字节(utf-8格式)
name.encode("gbk") #把字符串(Unicode)转换成字节(gbk格式)

 2.14:count() 

count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。

 name = "ooxxooxxooxx"
print(name.count("o"))
#有两个参数,不写默认为print(name.count("o",0,len(name)))
#0表示条件统计起始索引值,len(name)表示终止索引值

2.15:expandtabs() 方法把字符串中的 ('\t')转为空格,('\t')默认的空格数是 8

\t 表示横向制表符  \n表示换行符

 name = "ID\tname\tpasswd\n1\tzrh1\t123\n2\tzrh2\t123"
val = name.expandtabs(20) #20表示连同\t前面的内容一共占20个字符的位置
print(val)

输出结果:

2.16其他不常用的方法汇总:

五.格式转换

1.数字转字符串 str(对象)

2.字符串转数字 int(对象)

对象必须是形为数字,才能转换

Int(string)就会报错

3.数字转布尔值 bool(对象)

bool(0)是False

其他不是0的数都是True

但是在其他方面true = 1 flase = 0

4.字符串转布尔值 bool(对象)

bool(“”)是False

其他任何字符串都是True

注意:

代码示例:

a = 9 or 2>3
print(a)

输出结果:

9

代码示例:

a = 0 or 2>3
print(a)

输出结果:

False

代码示例:

a = 0 or 6
print(a)

输出结果:

6

代码示例:

a = 0 or 2<3
print(a)

输出结果:

True

5.元组转列表

v = (1,2,3)
val = list(v)

6.列表转元组

v = [1,2,3]
val = tuple(v)

7.列表转字符串

v = ["","",""]
result = "".join(v)
print(result)

六.列表

列表是Python中最基本的数据结构。列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。

如下所示:

list = ["one","two",3,4,"five"]

列表可以进行 增、删、改、查。如果列表只有一个对象,在后面也要加上,

列表中的元素可以是 数字、字符串、布尔值、列表(列表的嵌套)

复制列表:

a = [1,2,3]
b = a[:] #[:]是复制列表
print(a,b)

1.切片:

list[1:]      #从1开始取到最后
list[1:-1] #从1开始取到倒数第二值
list[1:-1:1] #从左到右一个一个去取,取到倒数第二值
list[1::2] #左到右隔一个去取
list[3::-1] #从3开始从右到左一个一个取,注意索引值不变

2.增  添加:

2.1:append()

append(“str”)将数据插到最后一个位置

代码示例:

list = ["one","two",3,4,"five"]
list.append("six")
print(list)

输出结果:

['one', 'two', 3, 4, 'five', 'six']

append()注意事项:

 list1 = [11,22,33]
val = list1.append(44)
print(val)
#这里返回的是None,对于列表来说,执行方法之后改变的是原来的值,变量接收不到

2.2:insert()

根据索引值位置将数据插入到任意一个位置

代码示例:

list = ["one","two",3,4,"five"]
list.insert(2,"two2") #想把新对象插在什么位置就输入相应的索引值
print(list)

输出结果:

['one', 'two', 'two2', 3, 4, 'five']

3.改  修改:

想要修改首先得用切片把相应的值取出来,在进行赋值即可。

代码示例:

list = ["one","two",3,4,"five"]
list[1] = 2 #将索引值为1的对象取出来,再重新赋值
print(list)

输出结果:

['one', 2, 3, 4, 'five']

需求:将list = ["one","two",3,4,"five"]这个列表里的two 和 4 修改成 2 和 four

代码示例:

list = ["one","two",3,4,"five"]
list[1:4:2] = [2,"four"]
print(list)

输出结果:

['one', 2, 3, 'four', 'five']

注意:在list[1:4:2] = [2,"four"]中,因为list[1:4:2]输出得是一个列表,所以等号右边也必须是个列表

4.删除:

4.1:remove

remove只能删除一个,并且()里填写的是对象内容

代码示例:

list = ["one","two",3,4,"five"]
list.remove("two") #删除two
print(list)

输出结果:

['one', 3, 4, 'five']

4.2 :pop 

pop删除的时候()里是填写索引值,并且还可以将删除数据返回出来,如果括号里面不填索引值,即pop(),则默认删除最后一个值。

代码示例:

list = ["one","two",3,4,"five"]
a = list.pop(1) #删除 two
print(list,a)

输出结果:

['one', 3, 4, 'five'] two

4.3 :del什么都可以删除

代码示例:

list = ["one","two",3,4,"five"]
del list[0] #删除 one
print(list)

输出结果:

['two', 3, 4, 'five']

5.列表的其他操作

5.1 :count:计算某元素出现次数

代码示例:

list = ["one","two",3,4,"five"]
v = list.count("two") #计算two出现的次数
print(v)

输出结果:

1

5.2:extend:用于在列表末尾一次性追加另一个序列中的多个值,括号中必须是可迭代对象,可以理解为批量的append()

代码示例:

a = [1,2,3]
b = [4,5,6]
a.extend(b) #把b加到a里面
print(a)
print(b)

输出结果:

[1, 2, 3, 4, 5, 6]

[4, 5, 6]

5.3:index根据内容找位置,输出得是第一个匹配内容的索引位置

代码示例:

list = ["one","two",3,4,"five"]
T = list.index("five") #查找five的索引值
print(T)

输出结果:

4

5.4 合集

1.reverse:用于反向列表中元素

2.sort:对原列表进行排序

reverse -- 排序规则,reverse = True 降序(由大到小), reverse = False 升序(由小到大)(默认)

3.in:查一个数据在不在列表内

4.type:身份判断:判断一个对象是不是列表

代码示例:

list0 = ["one","two",str(3),str(4),"five"]
list0.reverse() #反向列表中元素
print(list0)
list0.sort(reverse=True) #由大到小de对原列表进行排序
print(list0)
a = "six" in list0 #判单six在不在列表里
print(a)
b = type(list0) is list #判断list0是不是列表
print(b)

输出结果:

['five', '4', '3', 'two', 'one']

['two', 'one', 'five', '4', '3']

False

True

6.列表练习题:

list = ["one","two",3,4,"five","天才"]

把list列表中的天才的 天 改成 蠢

代码示例:

list = ["one","two",3,4,"five","天才"]
v = list[5].replace("天","蠢")
list[5] = v
print(list)

输出结果:

['one', 'two', 3, 4, 'five', '蠢才']

注意:字符串不能通过索引值修改,只能通过索引值取出来。(⬇)

7.补充:

需求:索引为奇数值,删除
注意:删除列表元素时,会影响列表长度,从而使得索引取值时,容易出现错误。

li = [11,22,33,44,66]
# 解决方案一:
li = [11, 22, 33, 44, 66] #
new_list = []
for i in range(0,len(li)):
if i%2 == 0:
new_list.append(li[i])
li = new_list
print(li) # 解决方案二:
li = [11, 22, 33, 44, 66] #
for i in range(len(li)-1,-1,-1): # 4,0
if i%2 == 1:
del li[i]
print(li) #解决方案三:切片+步长
li = [11, 22, 33, 44, 66]
del li[0:4:2]
print(li)

七.元组

Python 的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

1. 创建空元组

tup1 = ()

2. 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:

代码示例:

tup1 = (50)
print(type(tup1)) # 不加逗号,类型为整型
tup1 = (50,)
print(type(tup1)) # 加上逗号,类型为元组

输出结果:

<class 'int'>

<class 'tuple'>

3. 元组可以使用下标索引来访问元组中的值

4. 可以对元组进行连接组合

5.元组可以计算长度len()

6.元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

7.重点:

元组的儿子不能修改,但是孙子可以,元组的元素不能修改,但是元组的元素的元素是可以修改的。

代码示例:

tuple1 = ("one","two","three",[1,2,"zrh"],(1,2,3),"four")
tuple1[3][1] = 3
print(tuple1)
tuple1[3].append("q")
print(tuple1)

输出结果:

('one', 'two', 'three', [1, 3, 'zrh'], (1, 2, 3), 'four')

('one', 'two', 'three', [1, 3, 'zrh', 'q'], (1, 2, 3), 'four')

八.字典

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对,用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变类型。

不可变类型:整型、字符串、元组

可变类型:字典、列表

格式:变量名 = {键:值,键:值}

代码示例:

dict1 = {
"name":"zrh",
"age":20,
"height":75
}

1.:dict.get

1.1通过键取值

代码示例:

dict1 = {
"name":"zrh",
"age":20,
"height":75
}
print(dict1.get("name"))

输出结果:

zrh

1.2()参数,如果键不存在,就用后面的结果当作默认值。

代码示例:

dict1 = {
"name":"zrh",
"age":20,
"height":75
}
print(dict1.get("key",999))

输出结果:

999

2.:dict.keys() 、 dict.values() and dict.items()

经常和for循环一起使用

字典在for循环的时候尽量不要用两个变量去分别接收 键 和 值,这样会造成内存负荷过大,可以先遍历键,然后通过键去找值

代码示例:

dict1 = {
"name":"zrh",
"age":20,
"height":75
}
a = dict1.keys() #查看所有键
print(type(a)) #查看a的类型
print(a)
print(dict1.values()) #查看所有值
print(dict1.items()) #查看所有键值对

输出结果:

<class 'dict_keys'>

dict_keys(['name', 'age', 'height'])

dict_values(['zrh', 20, 75])

dict_items([('name', 'zrh'), ('age', 20), ('height', 75)])

for循环注意事项:

 dict1 = {}
for key in dict1:
pass
for key in dict1.items():
pass
for key in dict1.keys():
pass
for key in dict1.values():
pass

注意dict1后面括号的有无

3.增加键值对

代码示例:

dict1 = {
"name":"zrh",
"age":20,
"height":75
}
dict1["hobby"] = "eat"
print(dict1)

输出结果:

{'name': 'zrh', 'age': 20, 'height': 75, 'hobby': 'eat'}

如果增加的键已经存在,那就是改的功能。

4.删除

代码示例:

dict1 = {
"name":"zrh",
"age":20,
"height":75
}
del dict1["name"] #删除指定键值对
print(dict1)
dict1.clear()
print(dict1) #清空字典中所有键值对,但空字典还存在
dict2 = {
"name":"zrh",
"age":20,
"height":75
}
a = dict2.pop("name") #通过键去删除,并可以返回相应的值
print(a)
print(dict2)
b = dict2.popitem()
print(b)
print(dict2) #随机删除一对键值对,并且返回相相应键值对

输出结果:

{'age': 20, 'height': 75}

{}

zrh

{'age': 20, 'height': 75}

('height', 75)

{'age': 20}

5.嵌套

字典里面可嵌套字典或者列表都可以,列表页都可以嵌套字典。

在修改时,遇到字典用键,遇到列表用索引值,然后查找出来之后赋值即可,其他操作一样,反正一句话:

遇到字典用键,遇到列表用索引值。

6.update()用于将括号中的键值对添加到目标对象中,如果括号中的键在目标对象中存在,则更新目标对象的值

 dict1 = {
'k1':'v1',
'k2':'v2',
'k3':'v3'
}
dict1.update({'k4':'v4','k1':'v11'})
print(dict1)
#输出结果:{'k1': 'v11', 'k2': 'v2', 'k3': 'v3', 'k4': 'v4'}

7.fromkeys()创建字典

 #fromkeys使用的时候不是文件名.  是用dict.来调用
val = dict.fromkeys(['k1','k2','k3'],666) #将666作为值赋给K1 K2 K3三个键
print(val) #输出结果{'k1': 666, 'k2': 666, 'k3': 666}
val['k1'] = 999 #给数字重新赋值,在内存中重新开辟一块内存用来储存999,然后k1指向999,原来的k2 k3值不变
print(val) #输出结果{'k1': 999, 'k2': 666, 'k3': 666} val = dict.fromkeys(['k1','k2','k3'],[])
val['k1'].append(666)
val['k2'].append(999)
#k1 k2 k3指向的是同一个值,即[],每次往里加内容的时候 k1 k2 k3 的值都会发生变化
print(val) #输出结果{'k1': [666, 999], 'k2': [666, 999], 'k3': [666, 999]} val = dict.fromkeys(['k1','k2','k3'],[])
val['k1'].append(666)
val['k1'] = [1,2,3] #这里是重新赋值操作,在内存中重新开辟一块空间储存[1,2,3],k1指向他,k2 k3值不变
print(val) #输出结果{'k1': [1, 2, 3], 'k2': [666], 'k3': [666]}

8.补充

# 题:dic = {'k1':"v1",'k2':'v2'}把key="k1",键值对删除
del dic['k1']
# 题:dic = {'u1':"v1",'k2':'v2','k3':'v3'}把key中存在k,键值对删除
dic = {'u1':"v1",'k2':'v2','k3':'v3'}
# 不要在循环当前字典的过程中,修改当前字典大小
错误方式:
for key in dic:
if 'k' in key:
del dic[key]
正确方式 :
dic_key_list = []
for key in dic:
dic_key_list.append(key)
for row in dic_key_list:
if 'k' in row:
del dic[row]
print(dic) 、

python-字符编码、字符串格式化、进制转化、数据类型、列表、元组、字典总结的更多相关文章

  1. 编码/解码和进制转化工具hURL

    编码/解码和进制转化工具hURL   在安全应用中,各种编码方式被广泛应用,如URL编码.HTML编码.BASE64等.而在数据分析时候,各种进制的转化也尤为频繁.为了方便解决这类问题,Kali Li ...

  2. python 字符编码、格式化

      数据类型-布尔值一个布尔值只有True.False两种值,要么是True,要么是False 布尔值可以用and.or和not运算 空值是Python里一个特殊的值,用None表示 Python对b ...

  3. python的学习笔记01_4基础数据类型列表 元组 字典 集合 其他其他(for,enumerate,range)

    列表 定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问 ...

  4. Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助

    Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化  format函数字符串格式化  帮助 目录 Pychar ...

  5. python学习第四天 --字符编码 与格式化及其字符串切片

    字符编码 与格式化 第三天已经知道了字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采 ...

  6. Python字符编码及字符串

    字符编码 字符串是一种数据类型,但是字符串比较特殊的是编码问题,计算机只能处理数字,处理文本就需要将文本转换成数字. 计算机设计时8bit作为一个字节byte,一个字节能表示的最大整数就是(2^8)- ...

  7. python数据结构:进制转化探索

    *********************************第一部分*************************************************************** ...

  8. Linux c字符串中不可打印字符转换成16进制

    本文由 www.169it.com 搜集整理 如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的 ...

  9. 深入理解Python字符编码--转

    http://blog.51cto.com/9478652/2057896 不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError ...

  10. 深入理解Python字符编码

    不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 enc ...

随机推荐

  1. Filter(过滤器)(有待补充)

    Filter(过滤器) 一.Filter(过滤器)简介 Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的 ...

  2. Linux下Tomcat项目访问路径修改

    1.去除端口号8080. 首先,进入tomcat的安装目录下的conf目录,我的目录是 /usr/local/apache-tomcat-9.0.20/conf,编辑文件server.xml. 将se ...

  3. ssh延迟加载问题的解决方案

    1. 什么是延迟加载问题 ? 业务层查询的数据 关闭session 之后...web层获取延迟加载的数据失败. 例如:查询订单没有查询客户,需要显示客户,session已经关闭,无法查询 2. 如何解 ...

  4. About 睡觉觉吃饭饭

    rdc 的日常作息: 11:50 左右起床,洗漱后飞奔到超市买咖啡饼干,然后飞奔到实验室. 开始被比赛打:比赛前期觉没睡醒,题没读懂就开始乱写,签到签不上,比赛中期处于要被饿死的状态. 赛后吃饭饭,随 ...

  5. Codeforces 939 D Love Rescue

    Love Rescue 题意:Valya 和 Tolya 是一对情侣, 他们的T恤和头巾上都有小写字母,但是女朋友嫌弃男朋友上T恤上的字不和她的头巾上的字一样,就很生气, 然后来了一个魔法师, 它可以 ...

  6. HDU3652:B-number(数位DP)

    Problem Description A wqb-number, or B-number for short, is a non-negative integer whose decimal for ...

  7. 良许 | 听说,有个同事因为关闭服务器被打进 ICU ……

    提问:你是如何关闭电脑的? 普通青年 文艺青年 二逼青年 你是属于哪一种呢? 实话说, 这三种良许都干过~ 还好我没有对服务器这么做, 否则-- 分分钟被打进 ICU -- 1. 关机命令知多少 对于 ...

  8. 阿里云机器维护-gitlab Forbidden

    gitlab这台机子运行了一两年了,今天突然拉代码不能拉了,看了下接口403 登录网页 Forbidden 看了下是前两天挖矿病毒引发的,大致因为大量请求导致ip被封了 我们只要把这台机子加入配置白名 ...

  9. 2018web前端面试总结

    从今年3月份开始面试笔试找实习找校招到现在也半年多了,拿到了不少offer,也有了自己的一点心得体会,这里写出来分享一下,拙见勿喷. 注意一下,以下的观点仅代表我个人的体会不代表任何人任何组织和任何公 ...

  10. FreeSql (十八)导航属性

    导航属性是 FreeSql 的特色功能之一,可通过约定配置.或自定义配置对象间的关系. 导航属性有 OneToMany, ManyToOne, ManyToMany, OneToOne, Parent ...