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

转载于:https://www.cnblogs.com/smallfoot/p/9990227.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值