python day03笔记&练习


这一波我们学习的是python中比较关键的两个数据结构 列表和字典


列表俗称打了激素的数组 因为它不仅有数组的全部功能 而且每个索引的数值类型可以不同

不像数组 只能存同类型的数据 列表可以存各种各样的数据类型 

并且相对于不可变得元组 列表是可变的有序数据结构

列表的索引 完全和字符串是相同的 正向 逆向 切片 都是相同的操作

重复和连接 也是有和字符串相同的方法


那么下来就是增删查改

首先 增

增加有两种常用的方法

append方法和insert方法

append方法是将括号中的参数 追加到列表的最后 

insert方法有两个参数 index和value 将value插入到对应的index位置

还有一个方法叫extend拉伸 这个可以把括号中的多个参数 追加到列表后面


然后 改

改的话很简单 就是列表对应索引的再赋值


查的话 有count方法 统计一个参数在列表中出现的次数

index方法 查询参数在列表中对应的索引值


删的话 指定value删的方法是remove

直接删的话 del+ 列表[索引]

也可以使用切片 来实现各种类型的删除

整个删除列表的话就是del + 列表


然后排序的话 是使用sort方法 但是不建议在各种类型的值都有的列表中使用 因为排序在不同数值类型之间是没有意义的

逆转还是使用切片的方式[::-1]



2. 字典 

字典是比较特殊的一个数据结构 主要就是建立一个key和value的映射关系 就像c的链表一样 每个value对应一个它后继的指针 然后这一对数据被存在一个地址空间里

字典也是一样 把一个键 值 的对 一对一对的存储起来


字典的话还要说说创建

可以使用key:value直接创建 如下

d = {"key1":"value1", "key2":"value2"}

也可以通过工厂函数创建

userinfo = dict(user1="123", user2="456", user3 ="789") 

还可以通过fromkeys方法创建

print {}.fromkeys("hello")  没有指定value值时 默认为none

print {}.fromkeys(["user1", "user2", "user3"], "123")

这样的话 默认值就是123


同时 字典具有以下的特性:

字典不能索引和切片,因为字典是无序的数据类型;

字典不支持重复和连接;

字典支持成员操作符: 判断字典的key值是否在字典中存在; in, not in


那么下来说字典的增删查改

可以通过[key]=value直接添加

services['http'] = [80, 8080]

但是更推荐使用update方法添加

但是update有个特点就是如果字典中已存在要添加的key值的话 那么原先的对 就会被新加的对覆盖

而setdefault方法 的话 不会覆盖原先的键值对 但是如果key存在的话 是添加不进去的

所以从这里 可以看出来 key对于字典来说 相当于数据库表中的primary key 主键一样 是唯一标识的 不能重复


字典名[key]=value 

d.update({'a':2, 'b':3}) 

d.update(a=2, b=3)

这三种方法都是可以的 感觉还是和增是同样的操作


查看 key 值的话

services.keys() 

services.viewkeys()  

services.iterkeys()这三个方法是可以的

查看value值使用 values方法

查看键值对 的话 用items方法

查看key是否存在 使用has_key方法


d.pop(key)     删除指定 key 的字典元素

d.popitem()    随机删除字典的 key-value 元素

del d[key]     删除指定 key 的字典元素

d.clear()      清空字典元素


要循环遍历字典的话 使用一个二重循环

for i,j in services.items():        

print i,j


而且 字典还有一个很有意思的用法 

用来实现switch——case语句

因为python是不支持switch——case的

但是字典刚好是key value的键值对 并且值可以是一个表达式 那么刚好可以利用这个结构来构建switch——case

num1 = input() 

ope = raw_input() 

num2 = input()
 
 
d = {    

"+" : num1+num2,    

"-" : num1-num2,   

"*" : num1*num2,    

"/" : num1/num2, 

}
 if not ope in d:

    print "error operator" 

else:    

    print d[ope]


那么笔记整理到此结束  下面是练习


输入一串字符 判断其中最后一个单词的长度 单词以空格隔开


输入一串字符和一个字母 以空格隔开 判断字母在前面的字符中出现过多少次


将转义过后的密码翻译成正确的密码 密码对应规则是 大写字母小写并后移一位  小写字母对应成手机九宫格键盘的数字 数字不变


腾讯编程   

输入一个1~2000的数字 判断共有多少对素数相加的和等于这个数

这个不好测试手算太麻烦 我大概算了一下前20 是满足的 后面数字太大不好算了 应该是对的吧


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值