学python的第七天---基础进阶

news2024/11/28 0:50:09

  • 一、数组翻转
    • 写法一:myself
      • a[:size]=a[:size][::-1]
    • 写法二:函数
    • 写法三:
  • 二、复制数组
    • 写法一:
    • 写法二:
    • 写法三:
  • 三、最小公倍数
    • 写法一:
    • 写法二:
    • 写法三:
      • gcd
    • 写法四:
      • 其他:两数相加
      • 其他:打印数字
  • 四、排序
  • 五、走方格
    • 写法一:
    • 写法二:
      • global为全局变量哦!
    • 写法三:
  • 六、数组去重
    • 写法一:
    • 写法二:
    • 写法三:
  • 七、三元组排序

一、数组翻转

在这里插入图片描述

写法一:myself

切片太牛了

a[:size]=a[:size][::-1]

先将前size个数取出来,然后进行翻转
需要注意切片操作中左闭右开区间的规则

n,size=map(int,input().split())
a=list(map(int,input().split()))
a[:size]=a[:size][::-1]
for i in range(n):
    print(a[i],end=' ')

写法二:函数

n, m = map(int, input().split())

a = list(map(int, input().split()))

def reverse(a, size):
    for i in range(size // 2):
        a[i], a[size - 1 - i] = a[size - 1 - i], a[i]

reverse(a, m)

for x in a:
    print(x, end = " ")

写法三:

n, s = map(int, input().split())
a = input().split()
print(*reversed(a[:s]), *a[s:])

二、复制数组

在这里插入图片描述

写法一:

lambda x: int(x) 是一个匿名函数,它将一个字符串参数 x 转换为整数并返回该整数。通常情况下,Python中的 int() 函数将字符串参数转换为整数。lambda 函数提供了一种简便的方式来定义一个函数,通常用于需要将函数作为参数传递给其他函数的情况。

al,bl,size = map(lambda x:int(x),input().split(" "))
a = list(map(lambda x:int(x),input().split(" ")))
b = list(map(lambda x:int(x),input().split(" ")))

def copy(a,b,size):
    for i in range(size):
        b[i] = a[i]
    return b

print(*copy(a,b,size))

写法二:

n,m,s=map(int,input().split())
a=list(input().split())
b=list(input().split())
def copy(a,b,s):
    b[:s]=a[:s]
copy(a,b,s)
for i in range(m):
    print(b[i],end=' ')

写法三:

n, m, s = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
print(*(a[:s] + b[s:]))

三、最小公倍数

在这里插入图片描述
最小公倍数和最大公约数是我一直都没太弄明白的,但是我现在弄明白了一些。

写法一:

lcm(a,b) = a * b / gcd(a,b)

其中,gcd(a,b)是a和b的最大公约数。该公式基于一个简单的事实,即两个数的积等于它们的最大公约数和最小公倍数的积。所以我们只需要求出它们的最大公约数,就可以用它们的积除以最大公约数来得到最小公倍数。

这里的gcd函数实现了求两个整数的最大公约数。它使用了递归的方式来实现,即不断用余数代替较大的数,直到余数为0为止。这是一个经典的欧几里得算法,也称作辗转相除法。

def gcd(a, b):
    return a if b == 0 else gcd(b, a % b)
a, b = list(map(int, input().split()))
c = gcd(a, b)
print(a * b // c)

写法二:

这段代码实现了求两个整数的最小公倍数。

函数 lcm 的参数为两个整数 a 和 b,通过从 max(a, b) 开始枚举所有可能的最小公倍数,当遇到第一个同时能被 a 和 b 整除的数时,输出该数并跳出循环。

在主程序中,首先读入两个整数 a 和 b,然后调用函数 lcm,将它们作为参数传入。函数 lcm 的执行结果就是输出这两个整数的最小公倍数。

def lcm(a,b):
    for i in range(max(a,b),a * b + 1):
        if i % a == 0 and i % b == 0:#用的就是他的定义,遍历啦
            print(i)
            break
s = list(map(int,input().split(' ')))
a = s[0]
b = s[1]
lcm(a,b)

写法三:

gcd

from math import gcd

from math import gcd
a = list(map(int,input().split()))
print(a[0]*a[1]//gcd(a[0],a[1]))

写法四:

def gcd (m, n):

    if n > m:
        m, n = n, m

    if m % n == 0:
        return n

    return gcd (n, m % n)

def lcm(m, n):

    return  m * n // gcd(m, n)

m, n = map(int, input().split())
print(lcm(m, n))

其他:两数相加

没有想到还可以这样子写

x, y = map(float, input().split())
print(f'{x + y:.2f}')

还可以这样子写

print("%.2f" % sum(list(map(float, input().split()))))

其他:打印数字

a=input().split()
print(*a[:size],end=' ')

四、排序

按字典排序
在这里插入图片描述

这段代码实现的是输出1~n的全排列。

首先,读入一个整数n表示排列的长度。

定义一个长度为10的全局变量列表nums,用于存储排列结果;定义一个长度为10的全局变量列表st,表示数字是否已被使用。

然后定义一个深度优先搜索函数dfs,表示枚举当前排列中第u个位置的数字。如果u==n,即枚举完所有的位置,就输出当前排列结果。

在函数内部,遍历1~n的所有数字,如果当前数字未被使用,则将其标记为已使用,存储到nums数组中,然后继续搜索下一个位置,即调用dfs(u+1)。如果到达了排列的末尾,即u==n,就输出当前排列。

最后,在程序的最外层调用dfs(0)即可开始搜索排列结果。

n = int(input())
N = 10
nums = [0] * N
st = [False] * N

def dfs(u):
    if u == n:
        print(*nums[:n])
        return
    for i in range(1, n + 1):
        if st[i] == False:
            st[i] = True
            nums[u] = i
            dfs(u + 1)
            st[i] = False

dfs(0)

五、走方格

在这里插入图片描述

写法一:

n,m=map(int,input().split())
ans=0
def f(a,b):
    if a==n and b==m:
        return 1
    if a>n or b>m:
        return 0
    return f(a+1,b)+f(a,b+1) 

print(f(0,0))

写法二:

global为全局变量哦!

n, m = map(int, input().split())
res = 0

def dfs(a, b):
    global res
    if a == n and b == m:
        res += 1
    else:
        if a < n:
            dfs(a + 1, b)
        if b < m:
            dfs(a, b + 1)
dfs(0, 0)
print(res)

写法三:

n, m = map(int, input().split())
def f(a, b):
    if a < 0 or b < 0:
        return 0
    if a == 0 and b == 0:
        return 1
    return f(a - 1, b) + f(a, b - 1)
print(f(n, m))

六、数组去重

在这里插入图片描述

写法一:

具体来说,Counter(a)会返回一个字典,其中每个元素都是列表a中的一个不同元素,对应的值为该元素在列表中出现的次数。因此,len(Counter(a))返回的就是不同元素的个数。另外,需要注意的是,这段代码可能存在效率问题。由于Counter函数需要遍历整个列表,因此对于大规模的列表,可能会存在一定的时间复杂度问题。如果需要对性能进行优化,可以考虑使用其他算法实现。

from collections import Counter
n = int(input())
a = list(map(int, input().split()))
print(len(Counter(a)))

写法二:

def unique(a):
    return len(set(a))

m = map(int, input().split())
lst = list(map(int, input().split()))
print(unique(lst))

写法三:

n = int(input())
data = list(map(lambda x:int(x),input().split(" ")))

def get_unique_count(data,n):
    res = {}
    c = 0
    for d in data:
        if res.get(d,False):
            continue 
        else:
            res[d] = d
            c+=1
    return c

print(get_unique_count(data,n))

七、三元组排序

在这里插入图片描述

n = int(input())
res = []
for i in range(n):
    n = list(input().split())
    res.append((int(n[0]), float(n[1]), n[2]))
res.sort(key=lambda x: x[0])
for i in res:
    print("{} {:.2f} {}".format(*i))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

visual studio 2019创建一个项目的详细步骤

引言&#xff1a;本着边学边记录的原则&#xff0c;把学习的过程给记录下来&#xff0c;自己回顾的同时也分享给大家&#xff0c;转载请注明出处哈。 1、首先在桌面上双击打开visual studio 2019&#xff0c;看到如下界面&#xff1a; 2、点击1红框中的创建新项目&#xff0c;…

[hive]执行计划

https://www.bilibili.com/video/BV1g84y147sX/?p126&spm_id_from333.1007.top_right_bar_window_history.content.click&vd_source51f694f71c083955be7443b1d75165e0一、概述Explain呈现的执行计划&#xff0c;由一系列Stage组成&#xff0c;这一系列Stage具有依赖关…

Easy Deep Learning——全连接层

什么是全连接层?它的作用是什么? 我们还是回到之前的草地场景中,假设现在的问题变成让机器判断该草地上是不是有一只猫存在,由于之前做的卷积操作,将草地分成了许多网格,如果场地上只有一只猫,那么只有一个网格是有猫的,而其他的网格都不存在猫,一个卷积核运算可以得到…

java-泛型介绍

介绍 泛型是jdk5的时候出现的一种特性&#xff0c;可以在编译阶段约束操作的数据结构&#xff0c;并进行检查。 泛型只能用引用数据类型&#xff0c;如果是基本数据类型得使用包装类。 如ArrayList中的toArray(T[] a),是不可用转换为int[]的只能转换为Integer[] 好处 统一了…

Mysql的数据存储

Mysql的数据存储 对于mysql而言&#xff0c;数据是存储在文件系统中的&#xff0c;不同的存储存储引擎会有不同的文件格式和组织形式 1、InnoDB数据存储 InnoDB存储格式由大到小&#xff1a;表空间 → 段 → 区 → 页 → 行 对于innodb而言&#xff0c;数据是存储在表空间&…

linux系统整理一些工作中常用关于用户,用户组以及文件权限操作的相关命令

文章目录问题&#xff1a;前言&#xff1a;用户和用户组概念前言一、用户前言二、用户组一、添加用户和用户组二、查看用户所属组命令、三、管理用户组方法一、gpasswd命令方式二、newgrp命令方式三、usermod命令用户组实战&#xff1a;赋予用户root权限四、文件修改权限命令ch…

数字孪生与 UWB 技术创新融合:从单点测量到全局智能化

人员定位是指利用各种定位技术对人员在特定场所的位置进行准确定位的技术。人员定位技术主要应用于需要实时监控、管理和保障人员安全的场所&#xff0c;如大型厂区、仓库、医院、学校、商场等。人员定位技术的应用范围非常广泛&#xff0c;例如&#xff1a;-在工厂生产线上&am…

服务器Nginx安装实战

因为Vue项目发布在Tomcat中出现跨域为&#xff0c;所以需要Nginx进行反向代理&#xff0c;所以特此在云服务器中安装Nginx&#xff0c;本文章记录安装过程及解决安装过程中的错误处理。 一、Nginx 安装 登录服务器后&#xff0c;执行命令 yum info gcc-c pcre pcre-devel zl…

keras lstm

keras lstm的参数&#xff08;1&#xff09;units&#xff1a;LSTM层的单元个数&#xff0c;即LSTM网络中隐藏节点的数量。&#xff08;2&#xff09;activation&#xff1a;激活函数&#xff0c;用于更新内部状态的函数&#xff08;即门的决策函数&#xff09;。&#xff08;3…

dotConnect Universal 4.0.134 Crack

dotConnect Universal 能够呈现和访问不同于Microsoft 和框架的数据库的信息。网。它能够支持大多数数据库服务器以及 Microsoft Access、Oracle、MySQL、DB2、PostgreSQL、SQLite、InterBase、FireBird&#xff0c;最后是 Microsoft SQL Server。它可以通过 ODBC、OLE DB、ADO…

我来跟你讲vue进阶

一、组件&#xff08;重点&#xff09; 组件&#xff08;Component&#xff09;是 Vue.js 最强大的功能之一。 组件可以扩展 HTML 元素&#xff0c;封装可重用的代码。 组件系统让我们可以用独立可复用的小组件来构建大型应用&#xff0c;几乎任意类型的应用的界面都可以抽象…

ThreadLocal 的简单使用并深扒其实现原理

在多线程环境下, 如果想要保证每个线程都能独立于其它线程独自运行, 可以使用 ThreadLocal 来解决; ThreadLocal 就是用于提供线程局部变量的一个工具, 也就是说 ThreadLocal 可以为每个线程创建一个单独的变量副本; 其概念与同步机制正好相反, 同步机制是保证多线程环境下数据…

elasticSearch写入原理

elasticSearch写入原理 最近学习完了es相关的课程整理除了es的核心内容&#xff0c;学习这东西知其然知其所以然&#xff0c;自己按照自己的理解整理了es相关的面试题。先热个身&#xff0c;整理一下es的写入原理&#xff0c;有不对的地方请大家指正。 这些原理的东西我觉得还是…

MySql数据库(进阶篇)

&#x1f44c; 棒棒有言&#xff1a;人生总是在前行&#xff0c;不论走到哪里&#xff0c;只要带着信念往前走&#xff0c;比别人多一点努力&#xff0c;你就会多一份成绩&#xff1b;比别人多一点志气&#xff0c;你就会多一份出息&#xff1b;比别人多一点坚持&#xff0c;你…

js学习3(数组)

目录 结构图 数组操作 每日一练 结构图 数组操作 ## 数组中可以存储任何类型元素 ## 创建&#xff1a; 字面量([...])、创建对象(new Array(arr_len)) ## 遍历&#xff1a; 循环遍历、forEach(callback)、map(callback)、filter(callback)、every(callback)、some(callback)、…

1637_fgets函数的功能

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 没想到分析一个函数的实现会这么麻烦&#xff0c;中间利用的一系列的库函数以及内核接口我全都不熟悉。但是&#xff0c;这次的这个函数应该是之前C语言的基本教程…

vscode下载与使用

1.vscode下载 官网下载地址&#xff1a;Download Visual Studio Code - Mac, Linux, Windows下载太慢&#xff0c;推荐文章&#xff1a;解决VsCode下载慢问题_vscode下载太慢_迷小圈的博客-CSDN博客下载太慢&#xff0c;推荐下载链接&#xff1a;https://vscode.cdn.azure.cn/s…

JavaScript Array(数组)对象

数组对象的作用是&#xff1a;使用单独的变量名来存储一系列的值。参数参数 size 是期望的数组元素个数。返回的数组&#xff0c;length 字段将被设为 size 的值。参数 element ...; elementn 是参数列表。当使用这些参数来调用构造函数 Array() 时&#xff0c;新创建的数组的元…

SEO技术风口来了|SEO能否抓住全球约93%的网络用户?

开篇词作者/出品人 | 美洽 SEO 流量专家 白桦为什么要做一个 SEO 专栏&#xff1f;在一部分人眼中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已经是老掉牙的玩意儿&#xff0c;在这个信息爆炸的年代&#xff0c;它似乎已经无法承担吸引流量的主要作用。但&#xff…

2023年3月北京/广州/杭州/深圳数据治理工程师认证DAMA-CDGA/CDGP

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…