Python入门学习笔记(三)

本文是Python入门学习的第三天笔记,重点介绍了字符串的索引、切片、不可变特性以及常用操作,如center、count、endswith等。接着详细讲解了列表的定义、插入、删除、修改、查找、切片、排序、反转和循环遍历,并通过班级成绩排序小程序举例。最后简单提及了字典的定义和基本操作。
摘要由CSDN通过智能技术生成

Day3

又见str

-索引
str h e l l o
索引 0 1 2 3 4

  • 贴片操作(顾头不顾尾)

s=‘Hello’
s[1:3]
out:‘He’
s[2:4]
out:‘ll’

  • 字符串不可变
    对某个字符串如str重新赋值时,没有改变str本身,只是改变了str指向的地址,即给新值提供新地址,让str指向新地址。旧地址会被解释器定时回收。

-字符串常用操作

a=“Hello world”

str.center(整数,间隔符号)

str.count(要查找的字符,开始索引数,结束索引数)
str.endwith(a) #检验字符串str是否以a为结尾,返回true 或者 false
str.startwith(a) #检验开头,与以上类似
str.find(a) #字符查找,返回-1表示没找到,若找到,则返回索引
str.isdigit() #判断str是否是数字形式的字符串,如’1’
b=[“g”,“c”,“t”] ;“连接符”.join(b) out:g连接符c连接符t
a.replace(“l”,“M”) #用M替换a中原来所有的l
a.replace(“l”,“M”,1) #用M替换a中前1个l
a.split(" ") #用空格作为分隔符分开a out:[“Hello”,“world”]

又见list

定义

特点(索引)

插入:

1.list.append(需要添加的内容)
2.list.insert(索引,需要添加的内容)
3.list1.extend(list2) (把list2合并到list1的末尾)
4.list1.insert(索引,list3)

删除:

1.del list[索引] 直接删除
2.list.pop() #默认删除最后一个元素并返回被删除的值
3.list.pop(索引) #删除指定元素 tips:若要删除倒数第n个,则索引为-n
4.list.remove(“a”) #删除第一个找到的a值
5.list.clear() #清空

修改

查找:

1.list.index(“a”) #返回从左开始匹配到的第一个a的索引
2.list.cout(“a”) #返回a的个数

切片

1.list[1:4] #取索引1-3的内容
2.list[:4] #取索引0-3的内容
3.list[4:] #取索引4-末尾的内容
4.list[-5:-1] #取倒数第五-倒数第二的内容
5.list[-5:] #取倒数第五-倒数第一的内容
6.list[0👎2] #取从第零个索引一直到倒数第二个索引,但步长为2来取,即取索引为0,2,4,6…的值
7.list[0::2] #以步长为2从0到最右取相应索引的值

排序

list.sort()
tips:排序顺序为大写英文字母、小写、中文

反转

list.reverse() #把列表左右翻转

循环列表

list=["a","b","c"]
for i  in list:
	print (i)

out:

a
b
c

即打印了每一个list中的元素。
打印索引与list元素:

list=["a","b","c"]
for i  in enumerate(list): #enumerate为枚举
	print (i)

out:

(0, ‘a’)
(1, ‘b’)
(2, ‘c’)

list=["a","b","c"]
for i  in enumerate(list): #enumerate为枚举
	print (i[0],i[1])

out:

0 a
1 b
2 c

班级成绩排序小程序

需求:把[班级成员,成绩]列表按五个成绩等级重新排列。

stu_list=[["a",97],["b",50],["c",70],["d",59],["e",88],["f",100],["g",79],["h",65]]

new_stu_list=[
    [],
    [],
    [],
    [],
    []]
for i in stu_list:
    if i[1]>90 and i[1]<=100:
        new_stu_list[0].append(i)
    elif i[1]>80 and i[1]<=90:
        new_stu_list[1].append(i)
    elif i[1]>70 and i[1]<=80:
        new_stu_list[2].append(i)
    elif i[1]>60 and i[1]<=70:
        new_stu_list[3].append(i)
    else:
        new_stu_list[4].append(i)


for k in range(5):
    print(new_stu_list[k])

out:

[[‘a’, 97], [‘f’, 100]]
[[‘e’, 88]]
[[‘g’, 79]]
[[‘c’, 70], [‘h’, 65]]
[[‘b’, 50], [‘d’, 59]]

不足:如果每个成绩等级里也可以排序则更佳

字典

定义

  • 结构

{key1:value1,key2:value2}

  • key必须为不可变数据类型(字符串、数字),必须唯一(若key不唯一,则后面的key及相应的value会覆盖之前的同名的key)
  • 可存放任意多个value、可修改、可以不唯一
  • 无序
  • 查询速度快,且不受dict的大小影响。(与hash有关)

操作

  • 增加
    dict[key]=value

  • 删除
    del dict[key]
    dict.pop(key) #与list类似
    dict.clear()

  • 修改
    与普通变量赋值方式相同

  • 取值
    dict[key]
    out:value

  • 查询
    查询key是否在dict中:key in dict
    查询dict中所有的keys: dict.keys()
    查询dict中所有的values: dict.values()
    把dict中的每一对key-value变成列表中的元素(类似):dict.items()

  • 循环

单独取key value:#与list最后类似

  1. for k in dict.keys()
for k,v in dic.items():
	print(k,v)

3.#推荐使用这种这种速度快

for k in dict :
	print(k,dict[k])

求长度

len(dict)

嵌套

练习

快递分拣小程序:

#共452条记录
list = [
    ['王*龙', '北京市海淀区苏州街大恒科技大厦南座4层'],
    ['庞*飞', '北京市昌平区汇德商厦四楼403'],
    ['顾*锐', '江苏省扬州市三垛镇工业集中区扬州市立华畜禽有限公司'],
    ['王*飞', '上海市徐汇区上海市徐汇区H88越虹广场B座5E'],
    ['华*升', '北京市海淀区杰睿大厦'],
    ['朱*锴', '上海市浦东新区川沙新镇华川家园33号楼503'],
    ['陈*盼', '浙江省杭州市闲林街道,西溪华东园,十幢一单元401。'],
    ['司*鹏', '河南省鹤壁市淇滨大道310号  鹤壁京立医院'],
    ['聂*睿', '河北省石家庄市中山路勒泰中心写字楼b座11层'],
    ['张*', '辽宁省本溪市明兴丽城九号楼四单元'],
    ['冉*晗', '河北省石家庄市体育南大街385号'],
    ['高*杰', '北京市朝阳区广渠路42号院3号楼,408'],
    ['李*国', '安徽省合肥市新站区淮合花园'],
    ['常*源', '江苏省南京市白下路242号,南京市红十字医院,放射科'],
    ['张*玉', '河北省沧州市新居然家居广场'],
    ['王*川', '上海市奉贤区南桥镇 贝港七区'],
    ['冀*庆', '河北省保定市河北大学坤兴园生活区'],
    ['胡*晨', '浙江省宁波市浙江省宁波市江东区中山首府A座2004室'],
    ['尹*婷', '湖北省武汉市武汉大学信息学部'],
    ['李*东', '辽宁省大连市大关一街3号3-3-1'],
    ['张*', '天津市河西区隆昌路94号(天津科技馆)'],
    ['刘*', '湖北省黄冈市城关镇'],
    ['阿*亚', '内蒙古省呼和浩特市包头东接民望家园1区3号楼2单元1501'],
    ['孙*云', '山东省济南市山东省济南市历下区祥泰汇东国际,一号楼3005室'],
    ['曹*亮', '黑龙江省大庆市服务外包产业园D1'],
    ['侯*琦', '上海市长宁区金钟路凌空soho16号楼3楼'],
    ['郭*峰', '河南省商丘市高新技术开发区恒宇食品厂'],
    ['赵*生', '河北省唐山市朝阳道与学院路路口融通大厦2408室'],
    ['张*', '陕西省咸阳市文汇东路6号西藏民族大学'],
    ['刘*民', '北京市大兴区南海家园四里7号楼1单元902'],
    ['郭*兰', '湖北省武汉市湖北省'],
    ['张*强', '河北省张家口市经开区钻石南路11号'],
    ['鞠*龙', '山东省潍坊市玉清街江山帝景B区12号楼一单元14楼'],
    ['李*', '北京市海淀区西二旗智学苑5号楼超市'],
    ['许*康', '北京市西城区西单北大街甲133号'],
    ['叶*生', '江苏省扬州市扬子江中路756号'],
    ['赵*兴', '北京市海淀区西二旗上地信息路1号金远见大楼华纬讯301'],
    ['徐*革', '北京市海淀区闵庄路3号102栋二层206'],
    ['徐*', '安徽省淮南市金荷小区(金格商场旁)'],
    ['雷*', '北京市朝阳区望京街道望京sohoT1C座1201'],
    ['庄*', '浙江省杭州市恒生电子大厦'],
    ['蔡*恩', '湖北省武汉市仁和路沙湖港湾B区1103'],
    ['陈*', '江苏省苏州市巴城镇湖滨北路193号牛吃蟹庄'],
    ['黄*', '北京市朝阳区霄云路26号鹏润大厦A座33层'],
    ['魏*飞', '河北省石家庄市新石北路与红旗大街交口开元大厦502室'],
    ['张*', '山东省济南市兴港路三庆城市主人'],
    ['段*琪', '山西省临汾市福利路尧乡小区'],
    ['刘*', '北京市昌平区龙禧三街骊龙园601'],
    ['王*生', '上海市杨浦区邯郸路复旦大学遗传学楼319室'],
    ['王*君', '江苏省扬州市叶挺路318号建行营业部'],
    ['王*义', '北京市东城区环球贸易中心D座'],
    ['李*', '陕西省汉中市同沟寺镇晨光村二组'],
    ['裴*宇', '吉林省四平市岭西新耀豪庭7栋'],
    ['丁*', '山东省烟台市大季家镇芦洋村'],
    ['刘*铎'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值