元素分类

  有如下值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. 2017湘潭大学邀请赛E题(贪心)

    链接:https://www.icpc.camp/contests/4mYguiUR8k0GKE Partial Sum Input The input contains zero or more t ...

  2. mysql实现成绩表中成绩的排名

    有这样的一个表: 如果两个分数相同,则两个分数排名(Rank)相同平分后的下一个名次应该是下一个连续的整数值. 因此,名次之间不应该有“间隔”! 此时有2种方法: 第一: select grade, ...

  3. SDK安装详解以及adb的来源

    首先,下载Android SDK Tools,翻过墙的朋友可以去Google Android的官网上下载(http://developer.android.com/sdk/index.html) 选择 ...

  4. rest-framework的认证组件

    认证组件 1.登录认证(与组件无关): 首先要在model表内添加用户表和token表: from django.db import models # Create your models here. ...

  5. 搭建私服-docker registry

    Docke官方提供了Docker Hub网站来作为一个公开的集中仓库.然而,本地访问Docker Hub速度往往很慢,并且很多时候我们需要一个本地的私有仓库只供网内使用.Docker仓库实际上提供两方 ...

  6. Bridge (br0) Network on Linux

    动手实践虚拟网络 - 每天5分钟玩转 OpenStack(10) - CloudMan - 博客园https://www.cnblogs.com/CloudMan6/p/5296573.html li ...

  7. httpd sshd firewalld 服务后面的d的意思

    在操作系统中,一般系统的服务都是以后台进程的方式存在,而且都会常驻系统中,直到关机才结束.这类服务也称Daemon,在Linux系统中就包含许多的Daemon. 判断Daemon最简单的方法就是从名称 ...

  8. bootstrap modal垂直居中(简单封装)

    1.使用modal 弹出事件方法: 未封装前: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  9. MVC最全jar包

    <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> & ...

  10. SQL Server2012中如何通过bak文件还原SQL Server2012数据库

    1 登陆完数据库后,不要新建数据库,直接点击“数据库”然后右击"还原数据库". 2 在"源"选项中选择"设备". 3 选择相应的bak文件并 ...