近期想系统性的学习学习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