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] = 400
print(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 + li2
print(li3)
str1 = "hello"+"15pb"
print(str1)
tu1 = (1,2,3)
tu2 = (3,2,1)
tu3 = tu1+tu2
print(tu3)
4. 乘法操作 将原来的序列重复n次
print("-"*50)
li = [1,2,3]*10
tu1 = (1,2,3)*10
print(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)])
一些函数
获取所有的key
dic1 = {"name":"小明","age":18,"score":98.5}
li_key = dic1.keys()
print(li_key)
# 获取所有的value
li_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 = li1
li1[1] = 100
# 此时li1和li2 引用到了同一个位置,所以li1的改变会影响到li2
print(id(li1),id(li2))
print(li2)
# 如何避免这个问题呢??
li3 = li1.copy()
li1[3] = 200
print(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 copy
li4 = [1,2,3,["hello","world"],1,2]
li5 = copy.deepcopy(li4)
li4[0]= 100
li4[3][1] = "15pb"
print(li4)
print(li5)
06_拆包和装包
# 装包
m = 1,2,3
print(m)
a = 10
b = 20
# 这个交换变量,涉及到了先装包,再拆包。
a,b = b,a
# 拆字符串给每一个变量
str1 = "nihao"
z,x,c,v,b = str1
print(z)
# 拆列表赋值给每一个变量,并不确定长度的时候,可以
# 在最后面加一个 *变量名 接收所有剩下
li = ["hello",1,100,200]
q,w,e,r,*last = li
print(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)
根据下标遍历列表 1
li =["关羽","张飞","赵云","马超","黄忠","诸葛亮","周瑜","鲁肃","甘宁"]
for index in range(len(li)):
print("第{}个元素是{}".format(index,li[index]))
根据下标遍历列表2 enumerate这个函数能够返回 下标和内容的键值对
for index,item in enumerate(li):
print(index,":",item)
遍历字典 ,直接遍历,只能遍历key
dic1 = {"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("")