01_列表
li = [123,"hello",35.5,[1,2,3,4],["hello","world"]] print(li,type(li)) # print(li[0][1]) print(li[1][1]) print(li[3][1]) # 下标可以是负数 print(li[-1]) print(li[3]) print(li[-2]) 列表的内置函数 li3 = [100,200,300] # 增加 # 1. append 在结尾添加一个数据 li2.append(li3) print(li2) # 2. extend 扩展列表,将两个列表合并 li2.extend(li3) print(li2) # 3. insert 在指定位置添加元素 li2.insert(0,1000) print(li2) # 删除 # 1. pop 默认删除最后一个元素,也可以传递下标 del_ele = li2.pop(0) print(li2) print(del_ele) # 2. del 是pytong内置的关键字 可以删除数据 可以删除任何变量 del li2[0] //关键字 print(li2) # 3. clear 清空列表 # li2.clear() print(li2) # 查询 # 1.可以用下标获取元素 # 2. count获取的是某个数据出现了多少次 #li_count = li2.count() print(li2.count(2)) # 修改 # 1. 可以用下标 # 其他操作 # 1. 反序 li2.reverse() print(li2) # 2. 排序 li2.pop(3) li2.sort() 正向排序 print(li2) li2 = [1,2,3,2,2,4,5,6,7] print(set(li2)) cnt=0 num=1 def tset(): global cnt for i in (1,2,3): cnt=cnt+1 num=10 tset() print(cnt,num) print(type('111')) a=input('请输入x') b=input('请输入y') print("坐标x={},坐标y={}".format(a,b)) number=100 name='小明' info=name+number print(info) from functools import reduce sum2 = reduce(lambda x, y: x+y, range(5)) # 使用 lambda 匿名函数 range(x) 从0开始,不包括x本身 print(sum2) li=[] for i in range(1,101): li.append(i**2) print(li) li2=[i*i for i in range(1,10)] print(li2) #推导表达式 li3=[85,55,80,75,100,40,50,60,37,42] # li4=[ i>60 for i in li3] # print(li4) li5=[ x for x in li3 if x>60] print(li5) dic1={x:x**2 for x in range(11)} print(dic1) while 1: a= int(input("请输入3个数:")) b= int(input("请输入3个数:")) c= int(input("请输入3个数:")) li=[a,b,c] for i in range(2): for j in range(2): if (li[j]>li[j+1]): li[j],li[j + 1]=li[j+1],li[j] print(li) while 1: n= int(input("请输入分数:")) if 100<n<=90: print("Got A") elif 80<=n<90: print("Got B") elif 70 <= n < 80: print("Got C") elif 60 <= n < 70: print("Got D") elif 60 >n: print("Got E") else: print("不及格") li1=[7,8,9,7,2,1,48,9] li1.sort() print(li1) li1.reverse() print(li1) str1="hello world" str2="WELCOME" print(str1.upper()) print(str2.lower()) numberA=100 numberB=200 print(numberA,numberB) numberA,numberB=numberB,numberA print(numberA,numberB) li=[1,2,3,4,5,6,7,8,9,10] print(li[1:10:2]) i=0 li=[] while i<10: n = int(input("请输入{}数:".format(i))) li[i]=n i+=1 # mylist=list(set(li)) print(li) list=[] list.extend(eval(input('请输入值:\n').split())) print(list) lis =list(map(int,input("请输入10个数:").split())) mylist=list(set(lis)) print(mylist) list=[] for x in range(0,3): buf=eval(input()) list.append(buf) print(list)li=[1,2,3]print(max(li))
02_元组
# 元组 可以认为是常量数组tu1 = (1,2,3,4,5)print(tu1,type(tu1))# tu1[3] = 100 不能修改tu2 = (1,2,3,[100,200],4,5,6)# tu2[3] = 0# 元组中的元素是列表 这个列表的内容是可以改变的。tu2[3][1] = 400print(tu2,type(tu2))# 定义一个元素的元组tu3 = (200,)print(tu3,type(tu3))# 删除元组的元素del tu2[0]
03_序列的通用操作
字符串 列表 元组 都算是序列,序列有通用的操作1. 下标2. 切片 前闭后开,不包括后面的元素li = ["关羽","张飞","赵云","马超","黄忠"]li1 = li[1:3]print(li1)str1 = "helloworld"str2 = str1[3:6]print(str2)tu1 = ("关羽","张飞","赵云","马超","黄忠")tu2 = tu1[1:4]print(tu1,tu2)其他切片方式 设置步长li = ["关羽","张飞","赵云","马超","黄忠","诸葛亮","周瑜","鲁肃","甘宁"]li1 = li[0:9:3]print(li1)# 其他切片方式 使用负索引li2 = li[-9:-7]print(li2)# 省略第一个数,就是从头开始,省略第二个数就是到结尾结束li3=li[::3]print(li3)3. 加法操作 拼接li1 = [1,2,3,4,5]li2 = ["hello","world"]li3 = li1 + li2print(li3)str1 = "hello"+"15pb"print(str1)tu1 = (1,2,3)tu2 = (3,2,1)tu3 = tu1+tu2print(tu3)4. 乘法操作 将原来的序列重复n次print("-"*50)li = [1,2,3]*10tu1 = (1,2,3)*10print(li)print(tu1)5. 判断某个一元素是否在序列中 可以使用 in 运算符li1 = [3,2,7,8,4,3,2,7,9,0]num = int(input("请输入一个数字:"))if num in li1: print("%d在列表中"%num) else: print("%d不在列表中"%num)# 5. 关于序列操作的一些通用内置函数li = [1,2,3,4,5,6,7,8,9,10]# 求元素个数print(len(li))# 求最大值print(max(li))# 求最小值print(min(li))# 求和print(sum(li))# 排序print(sorted(li))# 反序print(list(reversed(li)))# 转换 list 转为列表 str() 转为字符串 tuple 转换为元组str1 = str(li)print(str1)tu1 = tuple(li)print(tu1)
04_字典
定义字典 dic1 = {"name":"小明","age":18,"score":98.5} print(dic1["name"]) print(dic1["age"]) print(dic1["score"]) dic2 = {1:"小明",8:"小白",15:"小黑"} 字典中的元素 直接动态添加就可以 dic2[5] = "小绿" print(dic2) 数字 字符串 元组都可以作为键,但是列表不行 dic3 = {(1,2,3):"test"} print(dic3[(1,2,3)]) 一些函数 获取所有的keydic1 = {"name":"小明","age":18,"score":98.5}li_key = dic1.keys()print(li_key)# 获取所有的valueli_value = dic1.values()print(li_value)# 判断某一个key是否存在 可以使用 in 判断key是否存在dic2 = {1:"小明",8:"小白",15:"小黑"}if 1 in dic2: print(dic2[1])
05_关于数据的问题
# python 对于基本数据类型,不会让已经存在的数据出现2份以上# a = 100# b = a# c = 101# print(id(a),id(b),id(c))# a += 1# print(id(a),id(b),id(c))# 对于列表呢li1 = [1,2,3,4,5]li2 = li1li1[1] = 100# 此时li1和li2 引用到了同一个位置,所以li1的改变会影响到li2print(id(li1),id(li2))print(li2)# 如何避免这个问题呢??li3 = li1.copy()li1[3] = 200print(id(li1),id(li3))print(li1)print(li3) 另外一个隐藏的比较深的问题 li4 = [1,2,3,["hello","world"],1,2] li5 = li4.copy() li4[0]= 100 li4[3][1] = "15pb" print(li4) print(li5)import copyli4 = [1,2,3,["hello","world"],1,2]li5 = copy.deepcopy(li4)li4[0]= 100li4[3][1] = "15pb"print(li4)print(li5)
06_拆包和装包
# 装包m = 1,2,3print(m)a = 10b = 20# 这个交换变量,涉及到了先装包,再拆包。a,b = b,a# 拆字符串给每一个变量str1 = "nihao"z,x,c,v,b = str1print(z)# 拆列表赋值给每一个变量,并不确定长度的时候,可以# 在最后面加一个 *变量名 接收所有剩下li = ["hello",1,100,200]q,w,e,r,*last = liprint(q,w,last)# 还有一种拆包方法 使用* 直接拆包print(*li)
07_for循环
直接遍历列表 li = ["hello","world","15pb",10,20,30] for ele in li: print(ele) 直接遍历字符串 for ele in "helloworld": print(ele) 使用range函数遍历 遍历输出0到100 range函数能够根据起始位置,终止位置,步长构建一个 可以循环的序列 for ele in range(50,101,10): print(ele) 根据下标遍历列表 1li =["关羽","张飞","赵云","马超","黄忠","诸葛亮","周瑜","鲁肃","甘宁"] for index in range(len(li)): print("第{}个元素是{}".format(index,li[index])) 根据下标遍历列表2 enumerate这个函数能够返回 下标和内容的键值对 for index,item in enumerate(li): print(index,":",item) 遍历字典 ,直接遍历,只能遍历keydic1 = {"name":"小明","age":18,"score":98.5} for key in dic1: print(key,":",dic1[key]) 直接遍历键和值 for key,ele in dic1.items(): print(key,":",ele)for i in range(1,10): for j in range(1,1+i): print(j,end=" ") print("")