python学习笔记

正在学习,未完待续······


一、基础知识

1.变量及容器

1.定义

1.单值变量:字符,数字,布尔,复数
多值容器:(有序)列表list,(有序)元组tuple,(无序)字典dict,(无序)集合set
2.变量名称只能以字母或下划线开头
3.占位符%s可以接收所有数据类型,%d只能接收数字
4.列表list用[]表示且依靠索引查找,字典dict用{}表示且依靠键值对查找
5.元组tuple内各值不可更改,用()表示
6.(散列类型)集合是无序的,无序也就没有索引,不能进行索引相关的操作。无序,python解释器就不能通过索引(位置)区分集合中的相同元素,所以集合中不能有相同的元素,集合用大括号{ }表示。集合中元素的数据类型可以不同,但集合中不能嵌套列表、元组、集合、字典

字符串,数字,布尔,复数都是一个值,改变需要重新赋值,都是不可变类型
容器元组开始不可变类型,字典、列表、集合都是可变类型

print(1,end="\n")#print有个参数end,默认为"\n"
name=input("please write your name\n")
print("your name is %s\n"%name)
print(type(name)) #数据类型
print(id(name)) #内存地址
print(4**2) #平方运算符
x=True #bool类型
print(type(x))
x=1-2j #复数
print(type(x))
L = ["dream",2,5.5,["over",67]] #列表list类型,之中元素允许更改
print(L[0])
print(L[3][1])
info={"name":"liu","sport":"swim"} #字典dict类型(key-value)
print(info["name"])
t=("aka",55,("cui",["ok","no"])) #元组tuple类型
print(t[2][1][0])
t[2][1]=[66,99] #tuple虽不可更改,但其中的list中的元素却可以更改,但不可直接将整个list修改,因为这样相当于更改元组元素,这是不允许的
print(type(t))
s={55,89,"aaa"}
print(s)
q={22,55,"bbb"}
print(s&q) #交集
print(s|q) #并集
print(s-q) #补集

2.字符串的操作

字符串是不可变类型

name="dream"
print("your name is %s, her name is %s"%(name,22))
#format方法
print("your name is {}, her name is {}".format(name,22))
print("your name is {1}, her name is {0}".format(name,22))#此时(name,22)相当于元组
print("your name is {age}, her name is {name}".format(name=name,age=22))
#字符串拼接
print("liu"+"yang")
print("liu"*6)
name="dream"
print(name[3])
print(name[-1]) #取到值为m
#强制转换
res=str("dream")
res1=str(["python"])
print(type(res1))
res[0]='h' #invalid,字符串不允许通过索引修改
#切片(顾头不顾尾,[起始:终止+1:步长(每几个字符一输出)])
res=str("hello world")
print(res[0:5:1]) #不写步长会默认为1
print(res[::-1]) #空白默认为起始和终止,-1表示逆序
print(res[4::-1]) #输出olleh
#字符串长度
print(len(res))
#成员运算in/not in判断子串是否在主串中,返回boolprint("dre" in "dream")
print("a" not in "bb")
#join
str1="I"
str2="am"
str3="fine"
print(" ".join([str1,str2,str3]))
#删除
name="ko"
del name
#lower,upper
name="Djk"
#对字符串进行改变需要重新赋值,字符串是不可变类型
tmp=name.lower()
print(tmp)
#第一个字母大写
res="lkdsjalkf"
print(res.captalize())
#每个单词首字母大写
res="hello world"
print(res.title())
#将字符串切分成列表,进而进行取值
res="if you dont sleep"
tmp=res.split()#注意需重新赋值
print(tmp)
res="if*you*dont*sleep"
tmp=res.split('*')
#去除字符串左右两边的特定字符,不写默认为空格
res="    dream  "
print(dream.strip())
name=input("input your name").strip()#防止用户多输入无关字符
print("name"==name)
#增加
print("name".center(9,'*'))//前一个数字代表增加后的新串总共有多少字符
print("name".rjust(11,'*'))
print("name".ljust(11,'*'))
#查找
name="back to the "
#查找子串在主串中的起始索引
print(name.find("to"))
#约束查找范围
print(name.find("the",0,2))#如果没找到返回-1
print(name.index("the",0,2))#如果没找到会报错
#rfind,rindex为从右往左
#统计子串在主串中出现的次数
print(name.count("t"))
#判断一个字符串里的数据是不是都是数字,返回布尔值
print(name.isdigit())
#判断一个字符串里的数据是不是都是字母
print(name.isalpha())
#比较两个串开头/结尾元素是否相同
name="dream will come"
print(name.startswith("dock"))
print(name.endswith("dock"))
#判断是否全是小写/大写
print(name.isupper())
print(name.islower())
#转义字符\n,\t,要想原样输出,字符串前加上r
print(r"true \n false")

3.数字类型的操作

res = 3//2#地板除:res值为1,也即不大于相除结果的最大整数

4.bool类型

所有数据结构类型都自带布尔值
None,0,空(空字符串,空列表,空字典)三种情况下布尔值为false
其余均为true

5.列表的操作

#列表是可变类型因此改变后不需要像字符串一样重新赋值
与字符串基本相同:
切片[ 0: 3: 1],
长度:print(len(name))
in, not in返回bool
查看某元素出现次数:count
从左至右查找指定元素并返回索引:index
往列表末尾增加元素:print(name.append(“s”))
往指定位置之前插入元素:print(0, name.insert(“s”))
往列表中添加多个元素,括号中写列表,末尾追加:name.extend([‘s’,“pace”])
删除:del name[1]
指定删除:name.remove(“pace”)
从列表中拿走一个值可以赋给其他变量(按照索引拿走,不写默认拿走末尾元素):name.pop(1)
清空:name.clear()
反序:name.reverse()
排序:只对数字列表排序:name.sort(reverse=True)–True代表倒序,False代表正序,不写reverse默认正序

6.元组

值不需要改动时,元组比列表合适

元组不能通过索引修改,但元组里的列表里的元素可以修改
但可以通过强制类型转换把元组变成列表修改后再转换成元组
与列表的索引,切片,长度len,count个数,index查找,成员运算一样

7.字典

字典是可变类型但字典的key必须是不可变类型,要作key列表不行,元组可以,不过最好用字符串

字典的生成:info={“name”:“梦想”,“like”=“吃”}或者info=dict(name=梦想,like=吃)
增加:直接将value赋值给不存在的key:info[“address”]=“beijing”
字典的len查看的是键值对的个数
成员运算in和not in 判断的是某个key是否再字典中
删除:del info[“name”]
清空:info.clear()
pop从字典中拿走的是value:info.pop()
popitem删除最后一对键值对,并返回一个元组:
res=info.popitem() #res为(“like”,“吃”)
修改:1.直接使用索引修改 2.info.update({“name”:“科学”})
setdefault0有则不动返回原值,无则添加返回新值
res=info.setdefault(“sex”,“male”)
查找:索引或者info.get(“name”)第二种方法若key不存在不会报错
取出所有的key:res=info.keys(),print(list(res))可以将返回值以列表输出
取出所有值:res=info.values()
取出所有键值对:res=info.items()

8.集合

集合是可变类型但集合中每一个元素都必须是不可变类型

增加:s={“dd”,“bb”,“cc”,“cc”}, s.add(“aa”)
从第一个元素删除:s.pop()
删除指定元素:s.remove(“bb”)
修改或增添:s.update(“ee”)
去重:res=set(s)

2.结构

tag = True
if tag:
	print("hhh")#tab键
	print("hhh")
	print("hhh")
else :
	print("eee")
	

2.and, or, not
3.三目运算符:print(“hh”) if 3==9 else print(“eee”)
4.elif

if a==9:
	print(a)
elif a==8:
    print(b)
else:
    print(c)    	

5.while

while True:
	if a==9:
		break
		

6.for

for i in range(0,n)#顾头不顾尾
	print(a[i])
for i in range(n-1,-1,-1)#逆向循环	

7.函数

def func(a,b):
	print(a+b)
func(3,4)
func(b=4,a=9)#valid,关键字传参可以打乱顺序
func(7,a=4)#valid,如果混合传参,位置实参必须放在关键字实参前面
#可变长度的参数(不定长参数)
#在形参中带*:会将调用函数时溢出位置实参保存成元组的形式
def foo(a,y,*z)
	print(x,y,z)
foo(2,5,8,9,8,5,6)		
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cloooocker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值