python之路_数据类型知识补充
知识点回顾与补充:
1. 数据类型
2. for和while:continue、break
for 循环嵌套实例;
#问题:实现输出结果1 10 2 #代码1: flag = False for i in range(1,10): print(i) if flag: break for i in range(10,20): print(i) flag = True break #代码2: for i in range(1,10): print(i) if i==2: break for i in range(10,20): print(i) break
3. 计算机编码
ascii - 8位
unicode - 16,32位
utf-8 - 8 ~ 32位
gbk - 16位
4. 字符串格式化
- "asdf%s,sdfsdf%d" %('11',4) #占位符格式化才有意义,如print("asdf%s,sdfsdf%d")输出内容不变
- "asdf%s,sdfsdf%%" %'11' #字符串格式化中要保留%需要写两个%%
补充知识:(用变量对含占位符字符串进行表示,方便多次字符串格式化调用)
#实例: tpl = "我叫%s,你好!" name1 = tpl %('骑兵',) name2 = tpl %('步兵',) print(name1,name2)
5. 变量
不要使用python中已经使用的变量:list,str,tuple,dict,bool
6. 条件语句
7. 长度
len(xxxx)
8. 索引操作
可以应用于如下数据类型:str、list、tuple、dict
9. 运算符
- 除法 #除法/:python2中得整数商,python3中为正常除法,而python3中整数商除法为://
- 字符串相乘 #可以将字符串多次重复
- 逻辑运算符or and #按顺序判断,当遇见or时结果为真,后面内容不再执行
- in
in判断实例展示:
dic = {'k1': 'v1','k2': 'v2'}
li = [11,22,33,44]
# (1)列表,查看是否存在其中
if 11 in li:
pass
# (2)字典,查看key是否在其中
a.for item in dic:
print(item)
b.for k in dic.keys():
print(k)
c.if "k1" in dic:
pass
#( 3) 字典,查看value是否在其中
循环实现,检查“v1”是否在字典 dic = {'k1': 'v1','k2': 'v2'} 的值中
#方法1 dic = {'k1': 'v1','k2': 'v2'} val = "v1" for v in dic.values(): if val in v: print(True)
#方法2 dic = {'k1': 'v1','k2': 'v2'} val = "v1" result = False for item in dic.values(): if item == val: result = True break print(result)
10. py2与py3(前者为py2)
用户输入函数:
raw_input()
input()
range():
range() #生成连续数字,列表类型
xrange() #for循环时才能使用,未知类型
range()
编译器默认使用的编码类型:
ascii(代码前加:#-*-encoding:utf-8 -*-可以更改为utf-8编码)
utf-8
输入函数:
print "alex" #一般没有括号,有也是可以
print('alex') #必须有括号
11. 字符串方法(字符串本身不变化)
#name="asdwwbaaknmcnAKHL"
a. 大小写:name.upper()、name.lower()
b.首字母大写:name.capitalize()
c.分割:a,b = split('*',1)
d.去除空白:strip e. 替换:replace
f. "xx".join(["11","22",])
g.是否是十进制数
h.判断是否以什么开头或者结尾:startwith()/endwith()
12. 列表
- 追加:append()
- 插入:insert()
- 反转:reverse()
-长度:len()
-for循环
补充:
问题:索引为奇数值,删除
# 删除列表元素时,会影响列表长度,从而使得索引取值时,容易出现错误。
例题:li = [11, 22, 33, 44, 66] # 索引为奇数值,删除
思路1:
# 解决方案一: 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): if i%2 == 1: del li[i] print(li)
思路2:切片+步长
li = [11, 22, 33, 44, 66] del li[0:4:2] print(li)
13. tuple
- 元素,不可变
- 只有一个元素时,一定加逗号
#例1:
val = (1) print(type(val)) #输出结果为:整数类型 #例2: val = (1,) print(val,type(val)) #输出结果为:元组类型
14. dict
get方法(get方法提取字典元素时,即使key不存在也不会报错,输出None):
实例:
dic = {'k1':"v1",'k2':'v2'} data = dic.get('kk1') print(data) #None
出错点:
例 题:dic = {'u1':"v1",'k2':'v2','k3':'v3'}把key中存在k,键值对删除
Tips:不要在循环当前字典的过程中,修改当前字典大小
# 错误方法: dic = {'u1':"v1",'k2':'v2','k3':'v3'} for key in dic: if 'k' in key: del dic[key] print(dic) # 正确方式 dic = {'u1':"v1",'k2':'v2','k3':'v3'} 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)
14. int
- 最少用多少二进制位表示:bit_length()
15. 数据类型的相互转换
#字符串与整数 v = "123" val = int(v) v = 123 val = str(v) #元组与列表 v = (1,2,3,) val = list(v) # val = [] # for item in v: # val.append(item) v = [11,22,33,44] val = tuple(v)
16. 布尔值
- True,False
-常见 False情况: 0,None,"",{},[],()