元素分类

  有如下值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_字符串初识及操作

    字符串初识及操作 str  'alex'.'1235443543'.'[1,2,3]'.可存放少量数据. 索引.切片.步长 索引编号 正向索引 'python' 012345 'p'的正向索引编号为0 ...

  2. 监控系统对比 Ganglia vs Open-falcon vs Prometheus vs Zabbix vs Nagios vs PandoraFMS

    Zabbix vs Nagios vs PandoraFMS: an in depth comparison - Pandora FMS - The Monitoring Bloghttps://bl ...

  3. 接口工具之postman

    在我们日常开发中,经常会对功能接口进行相应的测试.那么postman是一款不错的测试工具,因为平常使用的比较多,因此在这里简单记录一下,经常使用到的一些地方 简单的使用就不错介绍了, 基本流程: 新建 ...

  4. spring遇到的Error applying BeanValidation relational constraints

    spring3.1+hibernate4集成测试时遇到的问题: log4j:WARN No appenders could be found for logger (org.springframewo ...

  5. CSS3 transform-style 属性

    语法     transform-style: flat | preserve-3d   语法项目 说明  初始值         flat  适用于         块元素和行内元素 可否继承    ...

  6. Vue 鼠标移入移出事件

    Vue 中鼠标移入移出事件 @mouseover和@mouseleave 然后绑定style   现在开始代码示例 <template> <div class="pc&qu ...

  7. mysql修改默认端口号后从windows命令行登录

    mysql -u root -p -P 大写的P代表端口号,小写的p代表密码

  8. Django--权限信息操作

    一 . 权限控制 表结构的设计 rbca(Role Based Access Control)  基于角色的权限控制 3个model  5张表 class User(models.Model): # ...

  9. Java中的super()使用注意

    1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)3)super: 它引用当前对象的 ...

  10. RestTemplate proxy 设置方式

    RestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory() {{ setProxy(new ja ...