python基础二
基础数据类型 总览
int:用于计算,计数,运算等。1,2,3,4
str:“这些内容” 用户少量数据的存储,便于操作。
bool:True,False,两种状态,机器反馈给用户的对,错。
list: [1,"alex",True,{},[],()...] 大量的数据,各种数据类型,操作方便。
tuple:(1,"alex",True,{},[],()...),只读列表。
dict:字典。存储大量关联性的数据。
{“name”:“alex”,“name_list”:[luffy,zoro,...],"太白":{“name”:“太白”,“sex”:“男”}}
set:集合。{}关系测试。交集,差集,并集,子集..
第一部分 :索引切片步长
按照索引值,取出来的都是一个字符,形成的字符串
s1 = "python深圳1期骑士计划" print(s1[0]) print(s1[-1]) #按切片取值.遵循原则。顾首不顾尾 print(s1[0:3]) print(s1[:3]) print(s1[0:]) print(s1[6:-1]) print(s1[6:]) print(s1[:-1]) print(s1[:]) #按照切片+步长 print(s1[:5:2]) print(s1[::2]) print(s1[::-2]) print(s1[::-1]) #如果要倒着取值,要加一个反向步长 print(s1[:-6:-2])
第二部分:字符串常用方法
name = "olDBoy" #capitalize() 首字母大写 *** print(name.capitalize()) #center 字符串居中,前后填充自定义的字符 ** print(name.center(20,"*")) #upper:全部大写 lower:全部小写 ***** print(name.upper()) print(name.lower()) #应用举例 # code = "ADfer".upper() # your_code = input("请输入验证码:").upper() # if your_code == code : # print("验证码正确") #startswith ,endswith 判断开头结尾 **** # print(name.startswith("ol")) # print(name.endswith("o")) # print(name.endswith("B",3)) #判断位置3是否3开头 print(name.startswith("lD",1,5)) #swapcase 大小写翻转 ** print(name.swapcase()) s1 = "alex wusir*taibai6nvshen" #title :非字母隔开的每个部分的首字母大写 ** print(s1.title()) #find 通过元素找索引,找到第一个就返回,没有此元素就返回-1 ***** #index :通过元素找索引,找到第一个就返回,没有此元素就报错 ***** print(name.find("B")) print(name.find("lD")) print(name.find("w")) print(name.find("D",1,-1)) print(name.index("D")) print("----------------") name = " oldboy\t\n" print(name) #strip :默认去除字符串前后的空格,换行符,制表符 ***** print(name.strip()) name1 = "wer*alexweq**" print(name1.strip("erw")) #指定字符,从两端开始去除字符,直到遇到其他字符停止 #应用: # name = input("请输入用户名:").strip() # if username == "alex": # print("登陆成功..") #lstrip :去除左边的制表符换行符空格 rstrip:右边 s1 = "alex wusir taibai" #split:将字符串分割成列表(str ---->list) ***** l1 = s1.split() #默认按照空格分隔 print(l1) s2 = "alex,wusir,taibai" print(s2.split(",")) s3 = ",alex,wusir,taibai " print(s3.split(",")) s4 = " alex wusir taibai" print(s4.split(" ")) #空格 s5 = "alexlwle" print(s5.split("l",1)) #设置分割次数 #课下练习: print(s5.rsplit()) str1 = "alex" #join :自定制连接符,将可迭代对象中的元素连接起来(list ---->str)***** s2 = "*".join(str1) print(s2) str2 = "alex 是创始人,alex很nb,alex...." #replace ***** s3 = str2.replace("alex","SB") print(s3) s3 = str2.replace("alex","SB",1) #替换次数 print(s3) #格式化输出:format s1 = "我叫{},今年{},性别{}" #三种方式 #第一种 s2 = "我叫{},今年{},性别{}".format("taibai","28","nnan") print(s2) #第二种 s3 = "我叫{0},今年{1},性别{2},我依然叫{0}".format("taibai","28","nnan") print(s3) #第三种 s4 = "我叫{name},今年{age},性别{sex},我依然叫{name}".format(age="28",name="taibai",sex="nnan") print(s4) #is系列 name = "taibai123" print(name.isalnum()) #数字或字母组成 print(name.isdigit()) #判断是否全部数字组成 print(name.isalpha()) #判断是否全部字母组成 #公共方法 name = "alex" print(name.count("a")) #有切片 print(len(name))
for循环:对于一个数据类型进行循环,或者是一个有限次数的时候,往往要用到for
s1 = "sjdgsdj" i = 0 while i < len(s1): print(s1[i]) i += 1 for i in s1: #for 变量 in iterable(可迭代对象:多个元素组成的数据) print(i) for i in s1: #for循环的次数是和可迭代对象的元素个数有关 print(66)
列表:python的基础数据类型之一
列表可以索引,切片,加步长
列表可以存储大量数据
# 列表:python基础数据类型之一:其他语言中也有列表的概念,。js:数组 # 可以索引,切片,加步长 # 列表可以存储大量数据 li = ["alex", 100, True, [1, 2, 3], {"name": "太白"}, (22, 23)] # 第一:索引,切片,切片+步长 print(li[0], type(li[0])) print(li[0:4]) print(li[-1:2:-2]) # 第二:增删改查,其他方法 l1 = ["alex", "wusir", "taibai", "egon", "景女神", "文周老师"] # 增 # append 在列表末尾追加 l1.append("小温老师") print(l1) l1.append([1, 2, 3]) print(l1) name_list = ["张三", "李四"] # while 1: # username = input("请输入新员工名字:").strip() # if username.upper() == "Q": break # name_list.append(username) # print(name_list) # insert 插入指定位置 l1 = ["alex", "wusir", "taibai", "egon", "景女神", "文周老师"] l1.insert(1, "宝元") print(l1) # extend 迭代着追加 # 拆分组成的最小元素添加到列表中 l1.extend("abc") print(l1) l1.extend(["alex", "sb"]) print(l1) # 删除 # pop 按照索引去删除 增删改查里面唯一一个有返回值的 l1 = ["alex", "wusir", "taibai", "egon", "景女神", "文周老师"] ret = l1.pop(0) print(ret) print(l1) # remove 按照元素删除 l1 = ["alex", "wusir", "taibai", "egon", "景女神", "文周老师"] l1.remove("alex") print(l1) # clear 清空列表 l1.clear() print(l1) # del l1 = ["alex", "wusir", "taibai", "egon", "景女神", "文周老师"] # 可以按照索引删除 del l1[0] print(l1) # 可以按照切片删除(可以加步长) del l1[:1] del l1[1::2] print(l1) # 可以在内存级别删除整个列表 # del l1 内存级别删除 # 改 # 按照索引改 l1 = ["alex", "wusir", "taibai", "egon", "景女神", "文周老师"] l1[2] = "男神" print(l1) # 按照切片 把切片内容全清空,在把添加内容迭代着添加进去 l1 = ["alex", "wusir", "taibai", "egon", "景女神", "文周老师"] l1[:2] = "abab" print(l1) l1 = ["alex", "wusir", "taibai", "egon", "景女神", "文周老师"] l1[:4] = [11, 22, 33, 44, 55] print(l1) # 按照切片(加步长) :必须一一对应 l1 = ["alex", "wusir", "taibai", "egon", "景女神", "文周老师"] l1[:3:2] = "af" print(l1) # 查 # 索引,切片,切片+步长 # for循环 for i in l1: print(i) # 其他方法 # print(len(l1)) 查询总个数 # print(l1.count("alex")) #某个元素出现的个数 # index 通过元素找索引 print(l1.index("taibai")) # sort 从小到大排序 l2 = [5, 4, 6, 3, 7] l2.sort() print(l2) # 从大到小排序 l2.sort(reverse=True) print(l2) # reverse 翻转 l2.reverse() print(l2) # 第三: 列表的嵌套 l3 = ['alex', 'wusir', ['taibai', 99, 'ritian'], 20] # 1, 找到alex的e元素。 print(l3[0][2]) # 2, 将wusir变成大写。 l3[1] = l3[1].upper() print(l3) # 3, 给此列表['taibai',99,'ritian'] 追加一个元素,'文周' l3[2].append("文周") print(l3) # 4,将 'taibai' 首字母大写 l3[2][0] = l3[2][0].capitalize() print(l3) # 5,将 99 通过数字加1 的方式变成100,并放回原处。 l3[2][1] += 1 print(l3)
元组:只读列表,只允许查询,不允许增删改
# 元组:只读列表,只允许查询,不允许增删改 tul = ("alex", 100, True, [1, 2, 3], {"name": "太白"}, (22, 23)) # 索引, 切片, 切片+步长 print(tul[0]) print(tul[:3]) # for 循环 for i in tul: print(i) # index, count # 应用场景:一些非常重要的数据,不允许所有人修改的,放在元组中。 tul = ("alex", 100, True, [1, 2, 3], {"name": "太白"}, (22, 23)) # 元组 儿子不能改,孙子可能可以改 # "alex" , "100" 不能改 。[1, 2, 3] 里面的元素允许修改
range: 自定制的,数据范围的可迭代对象,类比成列表
# range 自定制的,数字范围的可迭代对象,类比成列表。 range(1, 101) #range 一般和for循环结合使用 for i in range(1, 20, 2): print(i) for i in range(1, 101, 2): print(i) for i in range(10, 1, -1): print(i) l1 = ["alex", "wusir", "taibai", "egon", "景女神", "文周老师"] for i in range(len(l1)): print(l1[i], i) for i in l1: print(l1.index(i), i)
字典:python的基础数据类型之一;字典可以存储大量的数据,关系型数据。
同时字典也是python中唯一的映射类的数据类型.
数据类型的分类:
可变的(不可哈希)数据类型:list,dict
不可变的(可哈希的)数据类型:str,int,bool
dic = {"name":"jin","age":18,"sex":"male"}
键值对的形式存在的, 键:值
字典的键必须是不可变的数据类型。(工作当中:都是由数字,或者str组成)
字典的值是任意数据类型。
优点:
字典可以存储大量的数据,关系型数据。
查询速度快。
python3.5之前包括3.5版本,字典是无序的。
python3.6开始,是有序的。
字典没有索引,切片。从增删改查开始
dic = {"name": "太白", "age": 18} # 增 # 第一种:有此key就改,无此key就添加。 dic["sex"] = "男" dic["age"] = 1000 # 第二种: # setdefault 有此key则不做任何操作但是返回对应的值,无此key则添加 dic.setdefault("hobby", "讲课") dic.setdefault("name", "alex") dic.setdefault("sex") # 删 # pop 通过键去删除键值对,也有返回值。 # 如果没有此键,并且设置了第二个参数,则不会报错。并且返回第二个参数。 dic.pop("name1", None) print(dic.pop("name1", None)) #返回None print(dic.pop("name1", "没有此键..")) #返回”没有此键.." print(dic.pop("name")) # clear 清空 dic.clear() dic = {"name": "太白", "age": 18, "sex": "男"} # popitem: 3.5及以前随机删除某个键值对。 # 3.6以后,删除最后一组键值对。 # 有返回值 print(dic.popitem()) # del # 按照键删除键值 # 删除整个字典 del dic["name"] del dic # 改 # 第一种: dic = {"name": "太白", "age": 18, "sex": "男"} dic["age"] = 25 # 第二种 # 两个字典,update dic = {"name": "太白", "age": 18, "sex": "男"} dic2 = {"hobby": "讲课"} dic.update(dic2) # 将dic2 中所有的键值对覆盖并添加到dic中,dic2不变 print(dic) print(dic2) dic.update(a="666", b=222, name="taibai") # 查 # 通过键去获取对应的值,没有此键报错 print(dic["name"]) # get :通过键去获取值,不存在的话返回设定值 print(dic.get("name")) print(dic.get("name1")) print(dic.get("name1","没有此键...")) # dic.keys() print(dic.keys()) # 类似于列表的容器中,没有索引,但是可以遍历。 for key in dic.keys(): print(key) for i in dic: # 直接循环打印的也是key print(i) # 转换成列表 list1 = list(dic.keys()) # 可以遍历。 # dic.valus() print(dic.values()) # 类似列表的容器 list2 = list(dic.values()) # 可以遍历 # dic.items() #可转化成列表,可遍历 print(dic.items()) # 分别赋值 必须一一对应 # 面试题 a = 10 b = 20 a, b = b, a # 先算等号右边 print(a, b) # len print(len(dic))