Python Day4-5
一 join方法
主要是做字符串的拼接:join后面跟的类型必须是要可迭代得到对象
for循环的对象是可迭代对象
str = "-"; seq = ("a", "b", "c"); # 字符串序列 print str.join( seq );
输出结果:
a-b-c
二 break 和 contionue在for循环中也可以使用,用法和while循环一样
break还可以退出当前的循环,回到上一级的循环
for i in range(1,10): print(i) for i in range(10,20): print(i) for i in range(1,10): print(i) break for i in range(10,20): print(i) for i in range(1,10): print(i) for i in range(10,20): print(i) break for i in range(1,10): print(i) for i in range(10,20): print(i) break break for i in range(1,10): print(i) for i in range(10,20): print(i) break flag = False for i in range(1,10): print(i) if flag: break for i in range(10,20): print(i) flag = True break ================== for i in range(1,10): print(i) continue for i in range(10,20): print(i) for i in range(1,10): print(i) for i in range(10,20): continue print(i) =================== for i in range(1,10): print(i) # 1,2 for j in range(i,10): # 2,9 print(j) for i in range(1,10): print(i) for j in range(10,i,-1): print(j)
三 各种数据类型外部,都不能加上逗号,不然都会变成元组的类型,带上逗号不能在值外部得首位,不然就会报错。
# a=1, # print(a,type(a)) # a='fang', # print(a,type(a)) # a=1,2,3,4,5, # print(a,type(a)) # # b='wa','sa', # print(b,type(b)) # c=[1,2],[2,4] # print(c,type(c)) # # d={'fang':18},{'jie':19} # print(d,type(d))
四 python2 和python3中range的区别
在python2 中range是直接在内存中直接就会产生数据,所以浪费内存,但是为了节省内存,python2中的xrange就会比较好一点,xrange是不会直接产生数据的,而是在你调用的时候才会产生数据,属于未知的类型(生成器),而且还会判断数据产生后得到一段时间假如没有被调用,就会自动的删除。
而在python3 中,将range优化,与python2中的xrange功能是一样的。
# py35 # range() = py27 xrange() # 应用 # for num in range(1,101): # if num == 77: # continue # print(num) # 2. 步长(默认1) # for num in range(1,101,1): # print(num) # for num in range(100,0,-1): # print(num) # 应用 # li = [11,22,33,44,55,66] # for num in range(0,len(li)): # print(num)
五 预备知识
只要代码执行放在内存,就可以直接调用
# if 1 == 1: # name = '123' # print(name) # 123 # if 1!=1: # name = '123' # print(name) # None
如果变量未创建(未定义)就会报错
六 占位符还可以赋值变量使用
pl = "我叫%sfdf" name = tpl %('骑兵',) name = tpl %('步兵',)
七 判断某个值是否与字典内的某个值相同
# d={ # 'k1':'v11', # 'k2':'v2' # } # val='v1' # for i in d.values(): # if val == i: # print(val)
练习:
dic = {'k1':"v1",'k2':'v2'} data = dic.get('kk1') # None len dict['k1'] = "vv1" for val = "v1" in dic # False # 出错点 # 题: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)
八 删除列表时会影响列表的长度,从而使取得索引只有影响
练习:删除列表基数索引所对应的值
1. 索引为奇数值,删除 # 删除列表元素时,会影响列表长度,从而使得索引取值时,容易出现错误。 li = [11,22,33,44,66] li = [11, 22, 33, 44, 66] # 0 # 索引为奇数值,删除 for i in range(0,len(li)): # 4,0 del li[i] print(li) # 解决方案一: # li = [11, 22, 33, 44, 66] # 0 # 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] # 0 # # 索引为奇数值,删除 # for i in range(len(li)-1,-1,-1): # 4,0 # if i%2 == 1: # del li[i] # print(li) 2. 切片+步长 li = [11, 22, 33, 44, 66] del li[0:4] del li[0:4:2] print(li)
九 数据类型之间的转换
1 数字和字符串的转换
#数字转成字符串 # a=123 # a=str(a) # print(a,type(a)) # # #字符串转换成数字 # a='234' # a=int(a) # print(a,type(a))
2 列表和元祖的转换
## 列表转换元组 # a=['as','afs'] # a=tuple(a) # print(a,type(a)) # #元组转换成列表 # a=('sa','gdf') # a=list(a) # print(a,type(a))
3 字符串和列表,还有元组的转换
##字符串转换成列表 # a='fsfsaasaa' # a=list(a) # print(a,type(a)) ##字符串转换成 # a='fsfsaasaa' # a=tuple(a) # print(a,type(a)) ####注释:在字符串转换成列表或者元祖时,会以索引取值,从第一个到最后一个,每取一个索引值,就会成为列表或者元组里面的元素。 ##列表转换字符串 # a=['sd','adf'] # a=str(a) # print(a,type(a)) # ##元组转换字符串 # a=('sd','adf') # a=str(a) # print(a,type(a)) # ####注释:在列表或者元祖转换字符串的时候,会将列表或者元组的整体转换成字符串 # a=['sd','adf'] # print(''.join(a),type(''.join(a))) # ##join的转换方法:列表转换字符串 # a=('sd','adf') # print(''.join(a),type(''.join(a))) # ##join的转换方法:元组转换字符串
十 每个数据相对应的布尔值
- True,False - False: 0,None,"",{},[],()
之前的小总结:
3. 编码
ascii - 8
unicode - 16,32
utf-8 - 8 ~ 32
gbk - 16
4. 字符串格式化
- "asdf%s,sdfsdf%d" %('11',4)
- "asdf%s,sdfsdf" %'11'
- "asdf%s,sdfsdf%%" %'11'
-
tpl = "我叫%sfdf"
name = tpl %('骑兵',)
name = tpl %('步兵',)
5. 变量
name = 'xxx'
不要使用python中已经使用的变量:list,str,tuple,dict,bool,int
6. 条件语句
if xxx:
pass
elif xxxx:
pass
else:
pass
7. 长度
len(xxxx)
8. 索引操作:
str:
v = "xxxx"
v[0]
tuple:
list
dict:
9. 运算符
- 除法
- 字符串相乘
- += -+
- or and 顺序
- in
dic = {
'k1': 'v1',
'k2': 'v2'
}
li = [11,22,33,44]
# 1.列表,查看是否存在其中
if 11 in li:
pass
# 2.字典,查看key是否在其中
"k1" in dic
for item in dic:
print(item)
for k in dic.keys():
print(k)
if "k1" in dic:
pass
# 3. 字典,查看value是否在其中
查看v是否存在,v1 in dic.values():
# 4. 字典,查看value是否在其中
循环实现,检查“v1”是否在字典 dic = {'k1': 'v1','k2': 'v2'} 的值中。
val = "v1"
# for val in dic:
# for val in dic.values():
# for v in dic.values():
# if val in v:
# print(True)
# 龙哥,老狗,成绩,海角
result = False
for item in dic.values():
if item == val:
result = True
break
print(result)
10. py2,py3
-
raw_input()
input()
-
range()
xrange()
range()
-
ascii(#-*-encoding:utf-8 -*-)
utf-8
-
print "alex"
print('alex')
11. 字符串
- 大小写
- 首字母大写
- 分割
a,b = split('*',1)
- 去除空白
- 替换
- "xx".join(["11","22",])
- 是否是十进制数
12. 列表
- 追加
- 插入
- 反转
长度
for循环
del li[0]
li[0:3:1]
嵌套:
[
1,
[33,44],
"xxx"
]
补充:
1. 索引为奇数值,删除
# 删除列表元素时,会影响列表长度,从而使得索引取值时,容易出现错误。
li = [11,22,33,44,66]
li = [11, 22, 33, 44, 66] # 0
# 索引为奇数值,删除
for i in range(0,len(li)): # 4,0
del li[i]
print(li)
# 解决方案一:
# li = [11, 22, 33, 44, 66] # 0
# 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] # 0
# # 索引为奇数值,删除
# for i in range(len(li)-1,-1,-1): # 4,0
# if i%2 == 1:
# del li[i]
# print(li)
2. 切片+步长
li = [11, 22, 33, 44, 66]
del li[0:4]
del li[0:4:2]
print(li)
12. tuple
- 元素,不可变
- 只有一个元素时,一定加逗号
# val = (1,2,3,4,555,6)
# print(val,type(val))
# val = (1)
# print(val,type(val))
# val = (1,)
# print(val,type(val))
13. 字典
dic = {'k1':"v1",'k2':'v2'}
data = dic.get('kk1') # None
len
dict['k1'] = "vv1"
for
val = "v1" in dic # False
# 出错点
# 题: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)
14. int
- 最少用多少二进制位表示
15. 字符串和布尔值相互转换
v = "123"
val = int(v)
v = 123
val = str(v)
list
v = (1,2,3,)
val = list(v)
# val = []
# for item in v:
# val.append(item)
tuple
v = [11,22,33,44]
val = tuple(v)
v = "礼券"
val = ["礼","券"]
16. 布尔值
- True,False
- False: 0,None,"",{},[],()
17. 高盛月
字符串功能
for循环
while循环
if else
字典