python学习-综合练习六(列表翻转、变量交换、复制列表、元素求和(lambda和递归)、字典排序、字典pop)

本文深入探讨Python中列表翻转、变量交换、列表复制、元素求和、字典排序及pop操作等核心数据结构处理技巧,通过实例展示不同方法的应用场景。


说明:本篇博文的知识点大部分来自 Python3 实例

列表翻转

列表翻转就是把列表的值按顺序左移,逻辑还是挺简单的。
我之前的博文也提到过,可以直接使用


lst1 = [1, 2, 3, 4, 5]
print(lst1[::-1])

在这里插入图片描述
这就是逆序打印列表
·
下面代码是另一种方式:


def leftRotate(lst1, d, n):
    for i in range(d):
        leftRotatebyOne(lst1, n)


def leftRotatebyOne(lst1, n):
    temp = lst1[0]
    for i in range(n - 1):
        lst1[i] = lst1[i + 1]
    lst1[n - 1] = temp


def printArray(arr, size):
    for i in range(size):
        print("%d" % arr[i], end=" ")


lst1 = [1, 2, 3, 4, 5, 6, 7]
leftRotate(lst1, 5, len(lst1))
printArray(lst1, len(lst1))

运行结果:
在这里插入图片描述

变量交换

之前博文里面也有提到,变量交换可以放在同一行里面进行。


int1 = 100
int2 = 200
int1, int2 = int2, int1
print(int1, int2)

结果:
在这里插入图片描述

复制列表

lst2 = clone_runoob(lst1)

直接使用方法复制列表即可

元素求和

两种方式使用lambda和递归方式


# 方法一
from functools import reduce

list1 = [1, 2, 3, 4, 5]
sum = reduce(lambda x, y: x * y, list1)
print(sum)


# 方法二
def listProduct(lst1, size):
    if size == 0:
        return 1
    else:
        return lst1[size-1] * listProduct(lst1, size - 1)


lst1 = [i for i in range(1, 6)]
print(lst1)
print(listProduct(lst1, len(lst1)))

运行结果:
在这里插入图片描述

字典排序

字典排序使用sorted函数,lambda 和kv选择排序对象,用kv[0]表示key,kv[1]表示value。
reverse参数表示顺序或者逆序,True为逆序。


dict1 = {'ack': 12, 'tom': 10, 'joy': 11, 'def': 13}
print(sorted(dict1.items(), key=lambda kv: (kv[0])))
print(sorted(dict1.items(), key=lambda kv: (kv[1])))
lst1 = [{'name': 'tom', 'age': 10, },
        {'name': 'bom', 'age': 10, },
        {'name': 'joy', 'age': 11, },
        {'name': 'ack', 'age': 12, },
        {'name': 'bck', 'age': 12, },
        {'name': 'def', 'age': 13}]
print(sorted(lst1, key=lambda i: (i['age'], i['name'])))
print(sorted(lst1, key=lambda i: (i['name'], i['age']), reverse=True))

运行结果:
在这里插入图片描述

字典pop

使用pop弹出字典的键值对,并且可以自定义弹出信息,这样弹出不存在的key不会抛异常,如果使用del删除,不存在的key会抛异常。


rst = dict1.pop('ack', '没有该值')
print(rst)
print(dict1)
rst = dict1.pop('ack', '没有该值')
print(rst)
print(dict1)

运行结果:
在这里插入图片描述
字典合并,使用update函数,使用方式:

dict2.update(dict1)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值