美文网首页PythonJava研究者
Python30分钟入门语法(与Java对比)

Python30分钟入门语法(与Java对比)

作者: 大海里的小小鱼 | 来源:发表于2018-01-05 23:56 被阅读277次

    定义变量:

    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
    

    相关文章

      网友评论

        本文标题:Python30分钟入门语法(与Java对比)

        本文链接:https://www.haomeiwen.com/subject/rvosnxtx.html