python和Java语法对比

python和Java语法对比定义变量:java:inta=1;python:a=1#python中不需要分号结尾,python用缩进判断代码块Python定义变量的时候不需要给出类型,直接定义即可,Python会自动判断变量类型。String类型:java:Stringa=newString();a="123";python:a="123"…

大家好,又见面了,我是你们的朋友全栈君。

定义变量:

java:  
int a = 1; 
python:      
a = 1     #python中不需要分号结尾,python用缩进判断代码块

Python定义变量的时候不需要给出类型,直接定义即可,Python会自动判断变量类型。
String类型:

java:
String a  = new String();
a = "123";
python:
a="123"     #python中单引号双引号不区分

Python中if语句bool表达式的运算符

java:     &&    ||    取反 ! true
python:   and   or    取反 not true
if a > 0 && a < 10 && !a == 5{}
if a > 0 and a < 10 and not a == 5:

Pyhthon中的除法

‘/’ 保留小数的除法
‘//’ 舍去小数的除法

数组定义

java:
String[] a = new String[5];
python:
c=[1,2,3,4]
d=[123,"3",c]  #python中数组接受任意类型,并且各个类型都嫩恶搞互相转换

Python中对数组的切片

一般数字数组
a[x:y:z] #x表示起始点,y终止点(不包含),z步长

a = [1,2,3,4,5]
print(a[1:-1])     #打印出数组a下标从1到-1(不包含)的数字

结果是
[2,3,4]

字符串数组

b ="12345"
print(b[1:-1])      #结果是'234'
 
print(int(b))        #将数组强制转换成int数组(必须字符串数组中全为数字)

利用切片倒序数组
a=[1,2,3,4,5]
a[::-1] [5,4,3,2,1]
省略前面两个参数,表示对整个数组,步数-1 从后往前
a[4:0:-1] [5,4,3,2]
完整的写完区间,但是会发现无法将一个数字倒序,因为切片不包含结束点

发现

但当你的起始或者终止点超过数组长度,就返回最大能返回的
a[4:-6:-1]
a[5:-9:-1]
上面两个都是一样的,因为第一个是结束点超出数组范围
第二个是起始点和结束点都超过
记住 -1表示倒数第一个小标,所以你不能写成
a[4:-1:-1] 这个表示起始终止点都是最后最后一个,所以返回空

循环语法

for循环

java:
for (int i=0; i<9; i++){
    System.out.println(i);
}
python:
for i in range(0,9):        #range()函数,不包含右边
    print(i)                         

#会发现在java用‘{’的地方,python使用‘:’表示
#比如if,class,for,while,定义函数时等等

相比之下会发现,python的语法更加接近我们英语语法,for i 对于每个i 在0-9(不包含9)中。

while循环

java:
while(int i < 9){
    System.out.print(i);
    i--;
}
python:
while i>0 :
    print(i)
    i = i-1    #注意python中没有自加自减

函数定义

现在我们定义一个filter函数,只保留数组中的偶数

a = [1,2,3,4,5,6,7,8,9]
def filter(l):        #def表示定义函数
    x=[]
    for i in range(0,len(l)):     #len函数获取数组长度
        if l[i]%2 == 0:
            x.append(l[i])         #.append往数组中加元素
    return x

然后比较魔性的写法

def filter(l):
    return [x for x in l if x%2 == 0]

递归函数

定义一个函数求出一个数字的阶乘

def fn(n):
    if n == 1:
        return 1
    else:
        return n*fn(n-1)

Python中的class概念

class Person:
    def __init__(self, name):
        self.name = name
    def getName(self):
        return self.name

上面这段代码表示class Person的构造函数,使用这个类,必须传入一个name的参数,然后里面还定义了一个getName()函数,得到这个类的name参数值

a = Person("abc")    #新定义一个变量名为a的Person类,里面的name值为abc
a.asd = 123          #与java不同的是,可以随时忘类中加入新的参数和值
print(a.name, a.asd)

改写Python的原有函数

Python可以将print这类基础函数改写,但是java做不到

oldPrint = print

def myprint(x):
    oldPrint(":::", x)
print = myprint

print("ashdhabsd")  #结果::::ashdhabsd
print(345)          #结果::::345

Map函数

map(函数名,数组)
比如我有一个power平方函数和int数组a[1,2,3]
a=list(map(power,a))
[1,4,9] 注意这里用map必须在前面加list转换,否则显示的不是数组

Lambda函数

Lanbda可以免去在外面定义函数,一些简单只需要用一次的函数可以直接写在表达式中

a = [1,2,3,4,5]
a = map(lambda x: x**2, a)
a = list(a)
print(a)

Python中的字典{} (HashMap)

a{ key1 : value1 , key2 : value2 } 一个key对应一个value

a = {"name":"abc","age":17}
a ['sex']='male'  #为字典中加入新的元素

判断key或者value是否在字典中

"name" in a         #ture
"abc" in a          #false   in a 默认是keys的集合
"abc" in a.values() #ture

不仅仅只是字典,其他字符串也可以同样操作

a = "hello 12 3 abc"
"abc" in a         #true

转载地址:https://www.jianshu.com/p/c38671c010f1

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/157033.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • matlab新手入门_入门画画初学者

    matlab新手入门_入门画画初学者matlab入门MATLAB是“matrixlaboratory”的缩写形式。MATLAB®主要用于处理整个的矩阵和数组,而其他编程语言大多逐个处理数值。矩阵是指通常用来进行线性代数运算的二维数组。MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。…

  • Android 开发者,你真的会用textview(maxEms和maxLength)的属性吗?

    Android 开发者,你真的会用textview(maxEms和maxLength)的属性吗?这里我们不说那些复杂的属性,光说我们通常用的比较多的,android:maxlength官网API对其的解释为:第一句,也就是说,他是个inputfilter(输入过滤器)他的作用是通过specifiednumber(你指定的数字)来限制textlength(文本长度),这里特指的是文本长度,而无论我们输入什么内容,英文,符号,数字,汉字………………这些都属于文本范围,所以ma

  • java 零拷贝_java深拷贝

    java 零拷贝_java深拷贝在传统的数据IO模式中,读取一个磁盘文件,并发送到远程端的服务,就共有四次用户空间与内核空间的上下文切换,四次数据复制,分别是两次CPU数据复制,两次DMA数据复制。零拷贝指在进行数据IO或传输时,数据在用户态下经历了零次拷贝,并非不拷贝数据。通过减少数据传输过程中内核缓冲区和用户进程缓冲区间不必要的CPU数据拷贝与用户态和内核态的上下文切换次数,降低CPU在这两方面的开销,释放CPU执行其他任务,更有效的利用系统资源,提高传输效率,同时还减少了内存的占用,提升应用程序的性能

  • Centos6.5镜像下载[通俗易懂]

    Centos6.5镜像下载[通俗易懂]CentOS6.5系统安装1、首先打开网易开源镜像站:http://mirrors.163.com/当然,大家也可以使用阿里开源镜像站:http://mirrors.aliyun.com/2、点击进入centos目录。3、因为我们选择安装centos6.5版本系统,所以点击进入6.5/目录4、我们打开里面的readme文件,找到下载地址:http://va…

  • windows Netstat命令详解

    windows Netstat命令详解Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用…

  • HttpSession的生命周期和何时销毁

    HttpSession的生命周期和何时销毁HttpSession生命周期:1.什么时候创建HttpSession1).对于JSP:是否浏览器访问服务端的任何一个JSP或Servlet,服务器都会立即创建一个HttpSession对象呢?不一定。①.若当前的JSP或(Servlet)是客户端访问的当前WEB应用的第一个资源,且JSP的page指定的session属性为false,则服务器就不会为JSP创建一个HttpSess…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号