元素分类

  有如下值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学习日记(数据结构习题)的更多相关文章

  1. Python 学习日记(第三周)

    知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...

  2. Python学习日记 --day2

    Python学习日记 --day2 1.格式化输出:% s d  (%为占位符 s为字符串类型 d为数字类型) name = input('请输入姓名') age = int(input('请输入年龄 ...

  3. python学习日记(基础数据类型及其方法01)

    数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...

  4. python学习4—数据结构之列表、元组与字典

    python学习4—数据结构之列表.元组与字典 列表(list)深灰魔法 1. 连续索引 li = [1,1,[1,["asdsa",4]]] li[2][1][1][0] 2. ...

  5. python学习日记(常用模块)

    模块概念 什么是模块 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代 ...

  6. Python学习日记(一):拜见小主——Python

    近日学习Python,特将学习过程及一点心得记录于此. 由于之前做过一个Java爬虫的项目,虽然很长时间没有碰过爬虫,但是小郭同学有一颗不死的爬虫心,哈哈.最近在互联网上找一些电影的时候,有很多电影只 ...

  7. python学习日记(流程控制习题)

    请输出1-2+3...+99除88以外的和 i = 1 sum = 0 while i <= 99: if i == 88: i = i + 1 continue else: if i%2 == ...

  8. python学习日记(2/3区别,环境,变量,数据类型以及简单习题)

    Python2 与 python3 的区别: python2源码不标准,混乱,重复代码太多 python3统一标准,去除重复代码 python2的默认编码方式是ASCII码,不能识别中文.解决方法:在 ...

  9. python学习日记(练习,流程控制+数据结构)

    简易计算器 #简易计算器,蠢新一枚,功能尚不完善,本为个人练习,仅供参考 while 1: a = input('请输入第一个运算数:').strip()#可输入前后带空格的数字 if a.lower ...

随机推荐

  1. Python-类的继承与派生

    python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1( ...

  2. 1076E - Vasya and a Tree(图的遍历)

    题意:给出一棵根节点为1的树,执行m次修改操作,每次修改为a,b,c,表示a节点的子树中,距离a小于等于b的子节点的权值加上c,求m次操作后每个节点的权值 分析:用线段树维护每层节点的权值,然后dfs ...

  3. myeclipse使用hibernate5框架load延迟装载对象报错_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy

    jar包问题,将hibernate-core-5.0.12.Final.jar删除,换为hibernate-core-4.2.3.final.jar搞定.注意项目运行过后可能删不掉jar包,只需关闭m ...

  4. 堆排、python实现堆排

    一.堆-完全二叉树 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),是不稳定排序 堆排序中的堆有大顶堆.小顶堆两种.他们都是完 ...

  5. fun = [lambda x: x*i for i in range(4)] 本质解析/原理,LEGB规则 闭包原理

    命名空间,闭包原理,参考点击本文 一.问题描述 fun = [lambda x: x*i for i in range(4)] for item in fun: print(item(1)) 上述式子 ...

  6. vue-cli 上传图片上传到OSS(阿里云)

    https://help.aliyun.com/document_detail/32068.html?spm=5176.doc32069.6.304.Qc4SUs(看) https://help.al ...

  7. JS --- 本地保存localStorage、sessionStorage用法总结

    JS的本地保存localStorage.sessionStorage用法总结 localStorage.sessionStorage是Html5的特性,IE7以下浏览器不支持 为什么要掌握localS ...

  8. Django Rest framework 框架

    一.开发模式: 1. 普通开发方式(前后端放在一起写) 2. 前后端分离(前后台通过ajaxo交互) 后端(django rest framework写的) <----ajaxo---> ...

  9. Hadoop2.0 Namenode HA实现方案

    Hadoop2.0 Namenode HA实现方案介绍及汇总 基于社区最新release的Hadoop2.2.0版本,调研了hadoop HA方面的内容.hadoop2.0主要的新特性(Hadoop2 ...

  10. Maven 项目 查找指定包的引用位置