首页 > 编程语言 >py面向算法

py面向算法

时间:2024-05-12 17:11:53浏览次数:24  
标签:int py range 算法 面向 数组 input split

近期想系统性的学习学习python,我想着了解一门语言是不是最开始就要会用他的一些基本语法来写题呢,抱着这个想法我就开始用c++写完一道题后用py再写一遍.

但是py主要的一些语法还好,只是表现形式不同而已,但是py的输入输出和数组方面相对来说特殊不少,或者根本就没有数组这个概念,(当然了在numpy中还是有的).但是对于我这种之前一直用c++突然开始用py的来说,数组完全不知道如何定义了,网上也很难搜到自己完全想要的.

再后来看见别人的python算法题集自己也才慢慢会写会用了,故想记录一下,能帮到人最好了.

(以前用py只是想去实现一些功能,对于数组啥的定义现在细想还真是从来没有涉及到过。一般的像表格也是直接读取就存好了,后序的用法就没区别了,系统性的开始学的话还是搞清楚会更好)

首先是正常的一维数组,定义方法大概就是下面两种:

l = [0] * n #表示创建一个长度为n的数组,数组的每个元素都是0

l = [0 for _ in range(n)] #表示创建一个长度为n的数组,数组的每个元素都是0

再来就是二维数组,其实方法也与一位数组类似,套两层就好:

l_2 = [[0 for _ in range(n)] for _ in range(n)]

不过需要注意的是
l_2 = [[0] * n] * n 看似是一个二维数组,但其实不是的,比如说你把l_2[0][0] = 1 实质上l_2[1][0],l_2[2][0]都会为1,他只是将一个一维数组引用了n次而已。

我不太清楚常用二维数组的定义是否还有别的,但是这一个肯定是没问题的

然后就是大家可能需要的值输入的问题了,这个方面py相对于c++非常特殊,可以对着注释好好看:

n = input()  # input() returns a string
n = int(input()) # 转化为int型,其中必须是换行结尾
m = int(input()) # 此时m不能与n在同一行,虽然不会报错但是会出现逻辑错误


#实现了一行输入多个变量,用空格隔开,split实质上就是分割函数,在很多语言都有这个函数,但是返回的任然是字符串
m , n = input().split()


#会报错,后面的split()返回的是一个列表,不能直接赋值给两个变量
m , n = int(input().split()) 

#正确的写法
m , n = map(int , input().split())

这个输入完之后就是数组的输入,这个也是很特殊的(没学py时的感受):

#输入一行数以回车为结束标志,将这些数存入一个列表中
l = list(map(int,input().split()))


#输入二维数组,每行以回车为结束标志,这第二维是限制了的,但是第一维并没有,这个按照要求输入即可
l = [list(map(int,input().split())) for _ in range(10)]

py还有一些有是好用的构造方法,也可以了解一下:

l = [x ** 2 for x in range(10)]
print(l)
#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
#这个就是直接把x的平方放到列表里面


# 还能两个一起
l = [x + y for x in range(3) for y in range(3)]
print(l)

#假设我们想知道abcde和hijn各取一个字符组成的所有的长度为2的字符串,不考虑顺序
l = [x + y for x in 'abcde' for y in 'hijn']
print(l)
#['ah', 'ai', 'aj', 'an', 'bh', 'bi', 'bj'......]

有一说一只想用py写项目之类,搞机器学习啊,做后台啥的话这些基本上用不上

写到这想记录的东西也就结束了,其他的什么函数之类私以为差别不大,用的时候搜一下很快就记得了,之后有多的再加吧。

标签:int,py,range,算法,面向,数组,input,split
From: https://www.cnblogs.com/ktyiwang/p/18187944

相关文章

  • 策略梯度玩 cartpole 游戏,强化学习代替PID算法控制平衡杆
     cartpole游戏,车上顶着一个自由摆动的杆子,实现杆子的平衡,杆子每次倒向一端车就开始移动让杆子保持动态直立的状态,策略函数使用一个两层的简单神经网络,输入状态有4个,车位置,车速度,杆角度,杆速度,输出action为左移动或右移动,输入状态发现至少要给3个才能稳定一会儿,给2个完全学不明白,......
  • 记字符串匹配KMP算法
    字符串匹配是一类经典的问题,在字符串s中找出模式串t第一个元素的下标,如果没有匹配到,则返回-1。此问题在leetcode中甚至归类为简单。解决此问题最直接的思路是使用暴力解法,从第0个元素开始逐个比较元素,当字符不匹配时,s的指针向前移动一位,不断重复。这种思路最简单且直接,但是无法通......
  • 自定义各类基础排序算法
    接口函数基础信息/********************************************************************* 文件名称: 数据结构中对于无序数列的排序算法* 文件作者:[email protected]* 创建日期:2024/05/11* 文件功能:对无序数列进行排序* 注意事项:None** C......
  • 匈牙利算法模板(二分图)
    booldfs(intnow){for(inti=h[now];i;i=nxt[i]){intt=to[i];//这里不用考虑会有回到父结点的边的问题//因为每次都是从左部找邻接点if(!vis[t]){vis[t]=true;//如果邻接点t是非匹配点,则找到一条增广路,匹配......
  • Python游戏制作大师,Pygame库的深度探索与实践
    写在前言hello,大家好,我是一点,专注于Python编程,如果你也对感Python感兴趣,欢迎关注交流。希望可以持续更新一些有意思的文章,如果觉得还不错,欢迎点赞关注,有啥想说的,可以留言或者私信交流。如果你想看什么主题的文章,欢迎留言交流,关注公众号【一点sir】,领取编程资料。如果你还不了......
  • 代码随想录算法训练营第四天 | 23.两l两交换链表中的节点 19.删除链表的倒数第N个节点
    23.两两交换链表中的两个节点题目链接文章讲解视频讲解时间复杂度o(n)空间复杂度o(1)tips:画图,并将每一步操作用伪代码写出来,然后将代码理顺可以避免修改代码的麻烦初始化的时候就要将previous初始化为current的前一个节点,这样可以保证循环的第一步满足循环要求cla......
  • 【python】bilibili动态删除脚本
    importpprintimportrequestsimportjsonimportreimportos#最大删除条数MAX_COUNT=200#保存cookie的路径COOKIE_FILE_PATH=r"./cookie.txt"classBWebSite(object):def__init__(self):ifnotos.path.exists(COOKIE_FILE_PATH):print("未检测到cooki......
  • 代码随想录算法训练营第第二天 | 24. 两两交换链表中的节点 、19.删除链表的倒数第N
    两两交换链表中的节点用虚拟头结点,这样会方便很多。本题链表操作就比较复杂了,建议大家先看视频,视频里我讲解了注意事项,为什么需要temp保存临时节点。题目链接/文章讲解/视频讲解:https://programmercarl.com/0024.两两交换链表中的节点.html/***Definitionforsingly-li......
  • python获取问津
    importosimportrequestsimportjsonimportrefrombs4importBeautifulSoupfromqiniuimportAuth,put_fileclassBilibiliVideoAudio:def__init__(self,bid,download_path='download'):self.bid=bidself.headers={&qu......
  • 【攻防技术系列】-- Python沙箱逃逸
    Python是一种强大而灵活的编程语言,但在某些情况下,可能需要运行不受信任的代码,同时又希望限制它的行为,以防止对系统的不良影响。这时,Python沙箱就成为一种有用的工具,它可以帮助你在安全的环境中运行不受信任的代码。本文将探讨Python沙箱的概念、常见的沙箱技术以及如何避免沙......