数据类型

数字 int:

1、将字符串转换为整形

a = "789"
print(type(a))
b = int(a)
print(type(b))

将字符串转换为数字类型(设a为字符串类型)

new_a = int(a)

2、当前数字的二进制至少需要多少位表示

-bit_lenght
num = "0011" v = int(num,base = 16) print(v) r = age.bit_lenght()

 字符串 str:   

#首字母大写
-capitalize
test = "harvey" v = test.capitalize()
print(v)
#全部变大写
-swapcase
test = "harvey"
v = test.swapcase()
print(v)
#全部变小写,casefold更全面更完美
-casefold
test = "HARVEY"
v = test.casefold()
print(v)
-lower test = "HARVEY" v = test.lower() print(v)

#######################################
#判断是否大写/小写;全部转换为大写/小写(用于登陆时用户输入的验证码)
-upper/lower test = "haRvey" v1 = test.islower() v2 = test.lower() print(v1,v2) test = "haRvey" v1 = test.isupper() v2 = test.upper() print(v1,v2)
#######################################
#设置宽度(20)并将内容居中,两边空白可加仅一个字符
-center
test = "harvey"
v = test.center(20,"-")
print(v)
-ljust/rjust
test = "harvey"
v = test.ljust(20,"*")
v = test.rjust(20,"x")
v = test.zfill(20)
print(v)
#字符串中寻找某子序列出现的次数
-count
test = "harveyHarvey"
v = test.count('H')
print(v)

#可设置寻找范围,起始位x和结尾位y,范围是从x+1位开始到y位结束(范围型基本都为x+1)
test = "harveyHarvey"
v = test.count('ar',7,9)
print(v)
#判断以...开始/结束
-startswith/-endswith
test = "harvey"
v = test.startswith('r')
print(v)
v = test.endswith('y')
print(v)
######################################
#寻找字符串中子序列是否存在及存在的位置(从左到右),不存在结果为-1。index功能与find相同,区别为找不到会报错,故一般不使用-find/-index
-find test
= "harveyHarvey" v = test.find('8') print(v) v = test.find('H') print(v)
######################################
#将一个字符串中的占位符替换为指定的值
-format/format_map
test = 'I am {name},age is {a}'
print(test)
v = test.format(name = 'harvey',a = '21')
print(v)
test = 'I am {0},age is {1}'
v = test.format('harvey','21')
print(v)

#-format与-format_map用法的区别
test = 'I am {name},age {a}'
v1 = test.format(name = 'harvey',a = '21')
v2 = test.format_map({"name":'harvey',"a":'21'})
print(v1,v2)
#判断字符串中是否只包含数字和字母
-isalnum
test = 'harvey0414'
v = test.isalnum()
print(v)
thing = 'utf-8_789'
v = thing.isalnum()
print(v)
#判断字符串中是否只有字母和汉字
-isalpha test = 'qwer' v = test.isalpha() print(v)
#判断字符串中是否只是数字
-isdecimal
-isdigit
-isnumeric test = "" # 1,② v1 = test.isdecimal() #针对范围最小 v2 = test.isdigit() #可支持绝大部分语言中的数字 v3 = test.isnumeric() #最全面,可支持汉字 print(v1,v2,v3)
#是否存在不可显示的字符(如\n换行符,\t制表符)
-isprintable test = "asfagsdg/tasafg" v = test.isprintable() print(v)
#判断是否全是空格
#expandtabs:指定空格数
-isspace test = "" v = test.isspace() print(v)
#判断是否为标题(every word首字母大写)
-istitle
test = "you are my uniqueness" v = test.istitle() print(v) #转换成标题 -title
test = "you are my uniqueness" v = test.title() print(v)
########################
#将字符串中每一个元素按照指定分隔符拼接
-join
test = "刹那芳华" v = "_".join(test) print(v)
刹_那_芳_华
########################
#################################
#移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
,从左/右开始
#移除空格或\t,\n,从左/右开始
-strip test = "harvey" v1 = test.strip('ar') v2 = test.lstrip('har') v3 = test.rstrip('ey') print(v1,v2,v3)
harvey vey harv
#################################
#对应关系替换
-makestrans,-translate test1 = "aeiou" test2 ="12345" v = "asddsge;wtreodf;hkukljuio" n = makestrans("aeiou","12345") #n = makestrans(test1,test2) new_v = translate(n) print(new_v)
#将字符串分割为三部分,从左/右开始
-partition
test = "ouiohtnagfdhsfgh" v = test.partition('s') print(v) v = test.rpartition('s') print(v)
######################################
#
分割指定前几个,从左/右开始 -split
test = "ousgnfjknosnkfspiu" v = test.split('s',2) print(v) v = test.rsplit('s',2) print(v)
['ou', 'gnfjkno', 'nkfspiu']
['ousgnfjkno', 'nkf', 'piu']
#整数计算器
value = "4+5"
v1,v2 = value.split('+')
v1 = int(v1)
v2 = int(v2)
print(v1+ v2)
######################################
#分割,根据True和False确定是否保留换行符\n
-splitlines
test = 'qwertyu\nasdfg\nzxvb' v = test.splitlines(False) print(v)
#检测字符串是否是字母开头
-isidentifier
test = "class" v = test.isidentifier() print(v)
#########################
#将指定字符串替换为指定字符串,并可以指定具体前几个
-replace
test = "harveyharveyharvey" v = test.replace("vey",'bbbbb') print(v) harbbbbbharbbbbbharbbbbb test = "harveyharveyharvey" v = test.replace("vey",'bbbbb',2) print(v) harbbbbbharbbbbbharvey
#########################

重点:join添加,   replace代替,   split分割,   upper变大写,   lower变小写,   find寻找字符串中字符,   strip移除

四个超重点:
一、for循环

for 变量名 in 字符串;
countinue  #跳出当前循环,当前循环不做操作,若有上一级循环则进入,如没有则什么都不输出
break    #中止整个循环
二、test[3]索引,下标,获取字符串中的某一个字符
#test[3]获取字符串中的某一个字符
test = "你怕是个小傻子吧"
item = 0
while item < len[test]:
    v = test[item]
    print(v)
    item += 1

for m in test:
    print(m)
    break
输出:你
for m in test:
    continue
    print(m)
输出:

三、切片

test = "你怕是个小傻子吧"
v = test[0:5]#从第0位取到第4位
v = test[0:-1]#-1代表取到倒数第二位
print(v)
你怕是个小
你怕是个小傻子

四、获取长度 

#python3,获取当前字符串中由几个字符组成
test = "你怕是个小傻子吧"
v = len(test)
print(v)

五、获取连续或不连续的数字

#可设置步长,取不连续的数     
v = range(1,100,5)#步长为5,每5个数取一次 v = range(100,0,-5)从后往前,每次减5
for item in v:
  print(item)
1,5,10,15,20......
练习题:根据用户输入的值,输出每一个字符以及当前字符所在的索引位置
test = input("...")
l = len(test)             #计算用户输入字符串长度
for item in range(0,l):   #让item在字符串长度中循环,即索引位置
    print(item,test[item])#用test[]的表示方法表示出在 item 位置的字符  

# 字符串一旦创建,不可修改
# 一旦修改或者拼接,系统都会重新生成字符串,不会在源字符串中添加等操作。

列表list:

1、列表格式:

li = [1,8,888,"test",["harvey", "你是猪",["18",8],"康师傅"],"qwer",True]

2、列表中可以嵌套任意类型

3、索引取值

print(li[3])

test

4、切片

print(li[4:-1])
[["harvey", "你是猪",["18",8],"康师傅"],"qwer"]

5、for循环,while循环

6、删除(del),结合切片或索引

del li[4:-2]
del li[4]
print(li)
[1,8,888,'test','qwer',True]

7、修改,结合切片或索引

li[1] = 120
li[1:2]
print(li)
[1,120,888,["harvey", "你是猪",["18",8],"康师傅"],True]

8、判断是否有某一字符串(in的用法)

li = [1,8,888,"harvey",["今麦郎",["19",8],"康师傅"],"qwer"]
v = "今麦郎" in li
print(v)
False

 9、取值

li = [1,8,888,"harvey",["今麦郎",["19",8],"康师傅"],"qwer"]
#取"9"
print(li[4][1][0][1])
#字符串转换为列表
#转换为列表类型时,系统会用for循环每一个元素,int类型不能被for循环,故不能通过此方法转换为list
new_li = list(li)

 10、转换

#将列表转换成字符串
#当列表中有数字时
li = [123,465,"123","harvey"]
s = ""
for i in li:
    s = s + str(i)
print(s)
123465123harvey
#当列表中只有字符串时
li = ["123","456","harvey"]
v = "".join(li)
print(v)
#添加
-append
-extend 他的参数必须为可迭代对象,内部要进行for循环
li = [12,34,56,78,56]
li.append(["猴哥猴哥""你真了不得"])
print(li)
[12, 34, 56, 78, 56, ['猴哥猴哥', '你真了不得']]

li.extend(["猴哥猴哥","你真了不得"])
li.extend("了不得")
print(li) [12,34,56,78,56,"猴哥猴哥","你真了不得"]
[12,34,56,78,56,'不','得','了']
#清除
-clear
li = [12,23,45,56]
li.clear()
print(li)
[]
#浅拷贝
-copy
li = [12,34,56]
li.copy()
print(li)
[12,34,56]
#计算某元素出现次数
-count
li = [12,23,45,56,12]
li.count(12)
print(li)
2
#获取当前值索引位置(从左到右,只获取第一个)可设置起始位置
-index
li = [12,22,33,22,44]
v = li.index(22,2,4)
print(v)
3
#插值
-insert
li = [12,22,33,22,44]
li.insert(想插入的位置,想插入的值)
print(li)
#删除一个值,通过索引指定,默认删除最后一个,也可获取删除的值
-pop
li = [12,22,33,22,44]
v = li.pop(1)
print(li)
print(v)
[12,33,22,44]
22

#删除一个指定值,左边优先
-remove
li = [12,22,33,22,44]
v = li.remove(22)
print(li)
li = [12,33,22,44]
(上面还有del)
#将当前列表反转
-reverse
li = [12,22,33,22,44]
li.reverse()
print(li)
[44,22,33,22,12]
#给列表排序,从小到大或从大到小
-sort
li = [12,22,33,22,44]
li.sort()
print(li)
[12,22,22,33,44]

li.sort(reverse = True)
print(li)
[44, 33, 22, 22, 12]

元组 tuple:

1、元素一级不可被修改,不能增加或删除,但元组中嵌套列表,则可以,例如:

tu =(123,"harey",[(33,44)],(8,9),"今麦郎",True,)
tu[2] = 8
print(tu) #报错

tu[2][0] = 8
print(tu) 
(123, 'harey', [8], (8, 9), '今麦郎', True)

tu[2][0][0] = 8
print(tu) #报错,因为(33,44)仍是元组

2、一般在元组最后加“,”,以区分其他类

tu =(123,"harey",[(33,44)],(8,9),"今麦郎",True,)

3、索引

v = tu[0]

print(v)

123

4、切片

v = tu[0:2]

print(v)

5、可被for循环,为可迭代对象(join,extend)

for item in tu:

  print(item)

6、转换

字符串,列表,元组可相互转换

s = tuple(s),li = tuple(li)

#获取某一元素出现次数
-count
#寻找某一元素,可指定起始索引位置与结束索引位置
-index

字典 dict:

1、基本结构:

{“k1”:v1 , "k2":v2 , "k3":v3}#键 值 对,key不能重复,否则只打印一个,布尔值视为1,0,注意不要重复

2、字典的value可以是任意值

info = {"k1":23 , "k2":True , "k3":[23 , [] , () , {"kk1":'vv1' , "kk2":'vv2'' , "kk2":(88,89)} ] , "k4":(88,89,90)}

3、列表,字典不能作为字典的key,因为他们都可以修改。

4、字典无序(每次打印结果会不同)

5、索引,不可切片,因为字典为无序

info = {"k1":23 , "k2":True , "k3":[23 , [] , () , {"kk1":'vv1' , "kk2":'vv2'' , "kk3":(88,89)} ] , "k4":(88,89,90)}

找到88:

v = info["k3"][3]["kk3"][0]

print(v)

6、删除del

info = {"k1":23 , "k2":True , "k3":[23 , [] , () , {"kk1":'vv1' , "kk2":'vv2' , "kk3":(88,89)} ] , "k4":(88,89,90)}

删除88:

del info["k3"][3]["kk3"][0]

print(info)

7、for循环

info = {"k1":23 , "k2":True , "k3":[23 , [] , () , {"kk1":'vv1' , "kk2":'vv2' , "kk3":(88,89)} ] , "k4":(88,89,90)}
for item in info:
  print(item)
k1
k2
k3
k4
for item in info.keys():
    print(item)
k1
k2
k3
k4
for item in info.values():
   print(item)
23
True
[23, [], (), {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (88, 89)}]
(88, 89, 90)
for item in info:
    print(item,info[item])
k1 23
k2 True
k3 [23, [], (), {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (88, 89)}]
k4 (88, 89, 90)
#最标准方式
for k,v in info.items():
    print(k,v)
k1 23
k2 True
k3 [23, [], (), {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (88, 89)}]
k4 (88, 89, 90)

 8、根据序列创建字典,并可设置统一值,不设置则默认为None

-formkeys

v = dict.fromkeys([k1,132,"888"])
print(v)
{'k1': None, 132: None, '888': None}

v = dict.fromkeys(["k1",132,"888"],666)
print(v)
{'k1': 666, 132: 666, '888': 666}

 9、根据key获取value

dic = {"k1":v2 , "k2":v2}
#索引,不存在时会报错
v = dic["k1"]
print(v)
v2
v = dic["k6"]
#报错

#key不存在时,可以指定默认值(None)
-get
v = dic.get("v6",6)
print(v)
6

10、删除

#指定某一个key删除
#
可获取被删除的value -pop dic = {"k1":"v1" , "k2":"v2"} v = dic.pop("k1") print(dic,v) {'k2': 'v2'} v1 #若删除的k不存在,则输出默认值(None),或指定值 v = dic.pop("k6",6) print(dic,v) {"k1":"v2" , "k2":"v2"} 6
#随机删除一个,不可传参数
-popitem
dic = {"k1":"v1" , "k2":"v2"}
k,v = dic.popitem()
print(dic,k,v)
{'k1': 'v1'} k2 v2

11、设置值

#若指定的key已经存在,则获取该值
-stdefault
dic = {"k1":"v1" , "k2":"v2"}
v = dic.setdefault("k1",123)
print(dic,v)
{'k1': 'v1', 'k2': 'v2'} v1
#若不存在,则添加指定的key,可设置value,没有则默认
v = dic.setdefault("k6",123)
print(dic,v)
{'k1': 'v1', 'k2': 'v2', 'k6': 123} 123

12、更新

#存在则修改,不存在则添加,两种表达方式
-update
dic = {"k1":"v1" , "k2":"v2"}
v = dic.update({"k1":'888',"k6":123})
v = dic.update(k1 = '888',k6 = 123)
print(dic)
{'k1': '888', 'k2': 'v2', 'k6': 123}

重点:keys,value,items,get,update

 

posted @ 2018-07-25 20:24  HHarvey  Views(113)  Comments(0Edit  收藏  举报