前言
python学习的第二周记录,元组后的笔记可能会更简洁点
列表
特点和格式
列表存储的是多个对象的引用
任意数据类型混存且可重复储存
创建格式eg:lst=['hello','98','world']
或者lst2=list(['hello','98','world'])
索引
索引是从0开始算(正序)从-1开始(逆序)
lst=['hello','98','world']
print(lst[0],lst[-1])
出来的结果是hello world(如果对象不在里面则VlueError)
获取指定元素的索引
eg:lst=['hello','98','world'] print(lst.index('hello'))
出来的结果是0(如果列表中有相同元素则返回第一个相同元素的索引值)
lst=['hello','98','world''hello'] print(lst.index('hello',0,4))
的意思是在0到4中返回hello的索引值
查询
获取列表的多个元素语法格式:[start:stop:step](无step的话默认为1(start为0))eg:
lst=['ad','ac','bc','asc',1,3,4]
print(lst[6:0:-2])
结果为[4, 1, ‘bc’]
遍历
lst=['ad','ac','bc','asc',1,3,4]
for a in lst:
print(a)
就会把列表中的值一一输出
添加删除修改
添加
append
lst=['ad','ac','bc','asc',1,3,4]
lst2=[1,2,4]
lst.append(90)#添加一个元素
print(lst)
#结果是['ad','ac','bc','asc',1,3,4,90]
extend
lst=['ad','ac','bc','asc',1,3,4]
lst2=[1,2,4]
lst.extend(lst2)#添加多个元素
print(lst)
#结果是['ad', 'ac', 'bc', 'asc', 1, 3, 4]
insert
lst=['ad','ac','bc','asc',1,3,4]
lst.insert((1,80)#任位置插入一个或多个数
print(lst)
#结果是['ad’,80,'ac','bc','asc',1,3,4]
删除
remove
lst=['ad','ac','bc','asc',1,3,4]
lst.remove('ad')#从列表中移除一个元素,若重复则除第一个
print(lst)
#结果['ac', 'bc', 'asc', 1, 3, 4]
pop
lst=['ad','ac','bc','asc',1,3,4]
lst.pop(2)#根据索引移除元素
print(lst)
#结果['ad', 'ac', 'asc', 1, 3, 4]
切片
lst=['ad','ac','bc','asc',1,3,4]
newlst=lst[1:4]#从一开始截到四(不包括四),然后得到新列表对象
print(newlst)#新列表对象
lst[1:4]=[]#令切片等于空列表
print(lst)#删后列表
#运行结果:['ac', 'bc', 'asc']
# ['ad', 1, 3, 4]
clear#清除所有元素
del#将列表对象删除
修改
lst=[10,20,30,40,80]
lst[2]=100
print(lst)
#结果:[10, 20, 100, 40, 80]
#多个的修改
lst=[10,20,30,40,80]
lst[1:3]=[200,300,400]#修改一到3(不包括3)的值
print(lst)
#结果:[10, 200, 300, 400, 40, 80]
排序
#简单升序
lst=[30,40,53,23,12]
lst.sort()
print(lst)
#升降序
lst=[30,40,53,23,12]
lst.sort(reverse=True)#降序
print(lst)
lst.sort(reverse=False)#升序
print(lst)
#sorted函数将产生一个新的列表对象
lst=[30,40,53,23,12]
new_lst=sorted(lst)#自动按升序排列
print(new_lst)
a_lst=sorted(lst,reverse=True)#降序
print(a_lst)
#结果[12, 23, 30, 40, 53]
# [53, 40, 30, 23, 12]
#另种创建及排序
lst=[i for i in range(1,10)]
print(lst)
#结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
字典
格式及创建
#第一种创建
abab={'一':1,'二':2,'三':3}#一是键,1是值
print(abab)
#第二种
ab=dict(a='d',f='k')
print(ab)
#上面的运行结果是
{'一': 1, '二': 2, '三': 3}
{'a': 'd', 'f': 'k}
获取
#第一种获取
abab={'一':1,'二':2,'三':3}
print(abab['一'])
#结果:1
#第二种获取
print(abab.get('一'))
#结果:1
#查找不存在时返回默认值
print(abab.get('四',10086))
#结果:10086
增删改
#删
abab={'一':1,'二':2,'三':3}
del abab['一']
print(abab)
#增
abab['四']=4
print(abab)
#改
abab['四']=5
print(abab)
#结果{'二': 2, '三': 3}
# {'二': 2, '三': 3, '四': 4}
# {'二': 2, '三': 3, '四': 5}
获取字典视图
abab={'一':1,'二':2,'三':3}
#获取key
keys=abab.keys()
print(keys)
print(list(keys))
#获取value
values=abab.values()
print(values)
print((list(values)))
#获取value-key对
items=abab.items()
print(abab)
print(list(items))
遍历
abab={'一':1,'二':2,'三':3}
for item in abab:
print(item,abab[item])
#结果是一 1
# 二 2
# 三 3
生成(打包)
a=['一','二','三']
b=[1,2,3]
c={a:b for a,b in zip(a,b)}
print(c)
#结果是:{'一': 1, '二': 2, '三': 3}
元组
a=('aab','abc','bbb','ddd')#元组的创建
print(a)
print(a[1:3])#切片
#结果:('aab', 'abc', 'bbb', 'ddd')
# ('abc', 'bbb')
#如果元组只有一个元素需要在元素的后面填一个括号
b = ("哒哒哒",)#这样创建的才是元组
#注意元组不可变(地址)但如果里面是列表的话可变
c = (3,4,5,['dada','baba'])
c[3].append('ccc')
print(c)
#结果:(3, 4, 5, ['dada', 'baba', 'ccc'])
集合
#集合
s = {3,4,5,'哒哒哒',8,7}
print(s)
#结果:{3, 4, 5, 7, 8, '哒哒哒'}
#注意集合里的必须是可哈希的
#可哈希:(基本是不可变)int,str,tuple,bool
#不可哈希:list,dict,set
#添加
s.add('啊吧')
print(s)
#结果:{3, 4, 5, 7, 8, '啊吧', '哒哒哒'}
#删除
s.pop()
print(s)
#结果:{4, 5, 7, 8, '啊吧', '哒哒哒'}(默认删第一个)
s.remove('哒哒哒')
print(s)
#结果:{4, 5, 7, 8, '啊吧'}
#查询
for item in s:
print(item)
交集 并集 差集 去重
s = {3,4,5,'哒哒哒',8,7}
b = {3,5,'哒哒哒',0}
#交集
print(s&b)
print(s.intersection(b))
#并集
print(s|b)
print(s.union(b))
#差集
print(s - b)
print(s.difference(b))
#运行结果:{3, '哒哒哒', 5}
# {3, '哒哒哒', 5}
# {0, 3, 4, 5, 7, 8, '哒哒哒'}
# {0, 3, 4, 5, 7, 8, '哒哒哒'}
# {8, 4, 7}
# {8, 4, 7}
#去重(去列表的重复数据)
lst = ['哒哒哒','哒哒哒','aaa',2]
print(list(set(lst)))
#结果:[2, 'aaa', '哒哒哒'](顺序会乱)
byte的编码和解码
#转化
#str.encode("编码“)
#bytes.decode("编码“)(解码)
a = "你爸爸"
a1 = a.encode("gbk")#编码
a2 = a1.decode("gbk")#解码
b = a2.encode("utf-8")#重新编码
print(b)
#运行结果:b'\xe4\xbd\xa0\xe7\x88\xb8\xe7\x88\xb8'
文件操作
读取
#模板:open(文件路径,mode=",encoding="")
f = open("E:/abab.txt",mode="r",encoding="utf-8")
content = f.read()
print(content)
#结果是:嘿嘿嘿
# sbdbbjanjf
#一行行的读取
f = open("E:/abab.txt",mode="r",encoding="utf-8")
for line in f:
print(line.strip())#strip()用于去换行
#运行结果:嘿嘿嘿
# sbdbbjanjf
写入
#写入
f = open("hello world.txt",mode="w",encoding="utf-8")#w模式下如果没有文件会自动创建
#w模式下每一次open都会清空内容
#写入
f.write("adf")
f.close()#要养成随手关闭的习惯
#写入列表
f = open("hello world.txt",mode="w",encoding="utf-8")
lst = ["ani","jjj","ii"]
for item in lst:
f.write(item)
f.write("\n")
f.close()
#追加写入append
f = open("hello world.txt",mode="a",encoding="utf-8")
f.write("nb")
with
with open("hello world.txt",mode="r",encoding="utf-8") as f:
for line in f:
print(line.strip())
可以不用关闭文件