python学习日记(数据结构习题)
元素分类
有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}
li= [11,22,33,44,55,66,77,88,99,90]
test = {}
list_small = []
list_big = []
for i in li:
if i == 66:
continue
elif i < 66:
list_small.append(i)
else:
list_big.append(i)
test['k1'] = list_big
test['k2'] = list_small
print(test)

输出商品列表,用户输入序号,显示用户选中的商品
商品 li = ['apple','orange','banana','pants','hat']
要求:1:页面显示 序号 + 商品名称,如:
1 apple
2 orange
…
2: 用户输入选择的商品序号,然后打印商品名称
3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
4:用户输入Q或者q,退出程序。
li = ['apple','orange','banana','pants','hat']
while 1:
for i in li:
print(li.index(i)+1,i)#将每个元素的索引加1和索引对应的元素打印出来
choice = input('请输入商品序列(Q退出case-sensitive):')
if choice.upper() == 'Q':
print('查询结束')
break
if choice.isdigit():#isdigit()判断字符串是否仅由数字组成
choice = int(choice)
if choice > 0 and choice <= len(li):
print('序列号:{}\t商品:{}'.format(choice,li[choice-1]))#格式化输出,输出查询的序列号和其对应的商品
else:
print('请输入有效数字')
else:
print('请输入数字')

列表的删除操作:[11,22,33,44,55]删除22,44
删除22,44,错误方法
i = [11,22,33,44,55]
for i in range(len(li)):#[0,1,2,3,4],当前li[1] == 22,li[3] == 44
if i%2 == 1:
del li[i]#由于列表是可变数据类型,每删一次,元素位置前移一次,无法实现,删掉22之后,li = [11,33,44,55],此时li[3] == 55
print(li)

删除22,44,正确方法
is = [11,22,33,44,55]#列表是可变数据类型,删除元素会引起动态变化
for i in range(len(lis)-1,-1,-1):#使用倒叙删除,前面的元素索引不会变化[4,3,2,1,0]
if i % 2 == 1:#满足的有 3 1
print(i) #i == 3 i == 1
del lis[i]#删除lis[3] == 44, 删除lis[1] == 22
print(lis)
print(lis)

删除22,44,简便方法1
[11,22,33,44,55]
l1 = lis[::2]#创建一个新列表
lis = l1#直接赋值
print(lis)

删除22,44,简便方法2
lis = [11,22,33,44,55]
l2 = []
for i in lis:
if lis.index(i)%2 == 0:
l2.append(i)
lis = l2
print(lis)

字典的指定删除
错误示范
#删除key中带有'k'的键值对
dic = {'k1':'v1','k2':'v2','a3':'v3'}
for i in dic:
if 'k' in i:
del dic[i]
#出现错误,即字典在遍历时不能被修改

第一种正确做法
#第一种种正确做法
dic = {'k1':'v1','k2':'v2','a3':'v3'}
li = []
for i in dic:
if 'k' in i:#字典遍历默认为key
li.append(i)#将带有k的key存到li里面
for j in li:#对li中的元素进行遍历,即遍历带有k的key
del dic[j]#即删除带有k的key
print(dic)

第二种正确做法
#第二种正确做法
dic = {'k1':'v1','k2':'v2','a3':'v3'}
dic1 = {}
for i in dic:
if 'k' not in i:
dic1[i] = dic[i]#向dic1里面添加key 为 i ,value 为dic[i]的键值对
dic = dic1
print(dic)

列表的去重
[1,2,3,2,1,5,6,4,5,6,4]
print(li)
set1 = set(li)#转换成集合去除重复值
print(set1)
li = list(set1)#再转换为列表
print(li)

pass
python学习日记(数据结构习题)的更多相关文章
- Python 学习日记(第三周)
知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...
- Python学习日记 --day2
Python学习日记 --day2 1.格式化输出:% s d (%为占位符 s为字符串类型 d为数字类型) name = input('请输入姓名') age = int(input('请输入年龄 ...
- python学习日记(基础数据类型及其方法01)
数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...
- python学习4—数据结构之列表、元组与字典
python学习4—数据结构之列表.元组与字典 列表(list)深灰魔法 1. 连续索引 li = [1,1,[1,["asdsa",4]]] li[2][1][1][0] 2. ...
- python学习日记(常用模块)
模块概念 什么是模块 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代 ...
- Python学习日记(一):拜见小主——Python
近日学习Python,特将学习过程及一点心得记录于此. 由于之前做过一个Java爬虫的项目,虽然很长时间没有碰过爬虫,但是小郭同学有一颗不死的爬虫心,哈哈.最近在互联网上找一些电影的时候,有很多电影只 ...
- python学习日记(流程控制习题)
请输出1-2+3...+99除88以外的和 i = 1 sum = 0 while i <= 99: if i == 88: i = i + 1 continue else: if i%2 == ...
- python学习日记(2/3区别,环境,变量,数据类型以及简单习题)
Python2 与 python3 的区别: python2源码不标准,混乱,重复代码太多 python3统一标准,去除重复代码 python2的默认编码方式是ASCII码,不能识别中文.解决方法:在 ...
- python学习日记(练习,流程控制+数据结构)
简易计算器 #简易计算器,蠢新一枚,功能尚不完善,本为个人练习,仅供参考 while 1: a = input('请输入第一个运算数:').strip()#可输入前后带空格的数字 if a.lower ...
随机推荐
- Java面试题详解四:==和equals的去别
一,功能 1.对于== 作用于基本数据类型的变量,比较的存储的值是否相等, 作用于引用类型的变量,比较的是其所指向的对象的地址是否相同(即是否是同一个对象) 2.对于equals Object的equ ...
- HDU 3947 Assign the task
http://acm.hdu.edu.cn/showproblem.php?pid=3974 Problem Description There is a company that has N emp ...
- Nginx Configuring HTTPS servers
Configuring HTTPS servershttp://nginx.org/en/docs/http/configuring_https_servers.html Configuring HT ...
- jvisualvm中VisualGC插件提示:不受此JVM支持
Visual GC插件「不受此JVM支持」问题 - djp567的博客 - CSDN博客https://blog.csdn.net/djp567/article/details/78662047 jv ...
- 给input标签添加默认提示文字
<input name="username" placeholder="请输入用户名" /> placeholder = "提示文字&qu ...
- CMake--静态库与动态库构建
小结内容 建立一个静态库和动态库,提供 HelloFunc 函数供其他程序编程使用, HelloFunc 向终端输出Hello World 字符串. 安装头文件与共享库. 1.代码与CMakeList ...
- linux之ssh互信
1.如果你是之作root用户互信的话,直接一路执行如下命令就行. 1.切换你需要互信的账户 su hadoop1 2.执行命令,一路回车即可(在当前用的宿主用户目录下的.ssh目录下生成公钥和秘钥id ...
- nginx反向代理proxy_pass的问题
起因:今天企业部署一个项目,用的nginx做的反向代理,配置如下: 测试结果令人失望,IP:端口 能访问项目,域名:端口 也能访问 ,但是 域名/接口名 访问失败 ################## ...
- Algorithm Visualizer
Algorithm Visualizer https://algorithm-visualizer.org/ https://algorithm-visualizer.org/divide-and-c ...
- sublime text3安装代码格式化的步骤
1.首先查看有没有安装package control插件,若没有,进行此链接操作——http://blog.csdn.net/kongguyoulan523/article/details/51144 ...