IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> python 3.10更新的一些新特性 -> 正文阅读

[数据结构与算法]python 3.10更新的一些新特性

@目录

IDLE

首先最容易看到的变化就是python自带的IDLE:
在这里插入图片描述
在这里插入图片描述
把指示用的指针移动。

match-case

我们先来看一个Java代码示例(无作用,仅语法):
在这里插入图片描述
如果是对c或者java等语言有了解的话,应该不难理解,但是,python以前是没有这种语法的,但是在3.10版本之后,python更新了属于自家的match-case语句。
来看官方文档怎么说:
A match statement takes an expression and compares its value to successive patterns given as one or more case blocks. This is superficially similar to a switch statement in C, Java or JavaScript (and many other languages), but it can also extract components (sequence elements or object attributes) from the value into variables.
match 语句采用表达式,并将其值与作为一个或多个事例块给出的连续模式进行比较。这在表面上类似于C,Java或JavaScript(以及许多其他语言)中的switch语句,但它也可以从值中提取组件(序列元素或对象属性)到变量中。
match-case语法结构如下:
在这里插入图片描述
接下来我们一起来看match-case的作用:

匹配数据

首先,就是匹配数据,例如

a=2
match a:
    case 1:
        print("太小了")
    case 3:
        print("太大了")
    case _:
        print("刚刚好")

其中“_”是通配符,代表一定会匹配成功,相当于其它语言迭代default。
接下来我们来看一个简单题:
在这里插入图片描述

力扣连接.
首先我们用ifelse语句来写出第一版:

class Solution:
    def calPoints(self, ops)->int:
        ans=[]
        for i in ops:
            if i=="C":
                ans.pop()
            elif i=='+':
                ans.append(ans[-1]+ans[-2])
            elif i=='D':
                ans.append(ans[-1]*2)
            else:
                ans.append(int(i))
        return sum(ans)

现在不用if语句,直接使用我们的新特性:

class Solution:
    def calPoints(self, ops)->int:
        ans=[]
        for i in ops:
            match i:
                case "C":
                    ans.pop()
                case '+':
                    ans.append(ans[-1]+ans[-2])
                case 'D':
                    ans.append(ans[-1]*2)
                case _:
                    ans.append(int(i))
        return sum(ans)

接下来提交:
在这里插入图片描述
可以看出,两种语法并不是差别很大,值得一提的是,在match中可以使用“|”,也就是逻辑或。

绑定变量

match可以用来绑定变量,也就是说匹配一部分(自我理解)

def matchh(a):
    match a:
        case [0,222]:
            print("0位置是0")
        case [111,0]:
            print("1位置是0")
        case _:
            print(a)

matchh([111,0])
matchh([0,222])
matchh([111,222])

结果如下:
在这里插入图片描述
当然,match里面还能嵌套if语句:

def matchh(a):
    match a:
        case [111,0] | [0,222]:
            print("其中包含了零")
        case [x,y] if a[0]==a[-1]:
            print("两个元素相等")
        case _:
            print(a)

matchh([111,0])
matchh([0,222])
matchh([111,222])
matchh([111,111])

在这里插入图片描述

bit_count()

先来看一道题:
在这里插入图片描述

你会怎么做?转字符串记数?还是位运算?(此处如果对位运算有疑问,可移步至此:位运算.python3.10更新了一个简单的方法(bit_count()),类似于Java的Integer.bitCount(),其能统计一个数中二进制位一的个数:
我们先来看位运算解题:

class Solution:
    def hammingWeight(self, n: int) -> int:
        count=0
        while n:
            count+=n&1
            n=n>>1
        return count

顺便发一下Java版:

public class Solution {
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) {
        int count=0;
        for (int i = 0;i <32 ;i++){
            count+=n&1;
            n=n>>1;
        }
        return count;
    }
}

现在我们来看新更新的bit_count():

class Solution:
    def hammingWeight(self, n: int) -> int:
        return n.bit_count()

后记

以上就是对新更新的match-case语句的一些浅显的理解,如有错误,还请帮忙斧正。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:56:50  更:2022-04-07 22:58:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:37:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码