定義變量:
java:
int a = 1;
python:
a = 1 #python中不需要分號結(jié)尾,python用縮進(jìn)判斷代碼塊
Python定義變量的時候不需要給出類型障陶,直接定義即可噪馏,Python會自動判斷變量類型券勺。
String類型:
java:
String a = new String();
a = "123";
python:
a="123" #python中單引號雙引號不區(qū)分
Python中if語句bool表達(dá)式的運算符
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中的除法
'/' 保留小數(shù)的除法
'//' 舍去小數(shù)的除法
數(shù)組定義
java:
String[] a = new String[5];
python:
c=[1,2,3,4]
d=[123,"3",c] #python中數(shù)組接受任意類型,并且各個類型都嫩惡搞互相轉(zhuǎn)換
Python中對數(shù)組的切片
一般數(shù)字?jǐn)?shù)組
a[x:y:z] #x表示起始點蚕苇,y終止點(不包含),z步長
a = [1,2,3,4,5]
print(a[1:-1]) #打印出數(shù)組a下標(biāo)從1到-1(不包含)的數(shù)字
結(jié)果是
[2,3,4]
字符串?dāng)?shù)組
b ="12345"
print(b[1:-1]) #結(jié)果是'234'
print(int(b)) #將數(shù)組強制轉(zhuǎn)換成int數(shù)組(必須字符串?dāng)?shù)組中全為數(shù)字)
利用切片倒序數(shù)組
a=[1,2,3,4,5]
a[::-1]
[5,4,3,2,1]
省略前面兩個參數(shù)检眯,表示對整個數(shù)組厘擂,步數(shù)-1 從后往前
a[4:0:-1]
[5,4,3,2]
完整的寫完區(qū)間,但是會發(fā)現(xiàn)無法將一個數(shù)字倒序锰瘸,因為切片不包含結(jié)束點
發(fā)現(xiàn)
但當(dāng)你的起始或者終止點超過數(shù)組長度刽严,就返回最大能返回的
a[4:-6:-1]
a[5:-9:-1]
上面兩個都是一樣的,因為第一個是結(jié)束點超出數(shù)組范圍
第二個是起始點和結(jié)束點都超過
記住 -1表示倒數(shù)第一個小標(biāo)避凝,所以你不能寫成
a[4:-1:-1]
這個表示起始終止點都是最后最后一個舞萄,所以返回空
循環(huán)語法
for循環(huán)
java:
for (int i=0; i<9; i++){
System.out.println(i);
}
python:
for i in range(0,9): #range()函數(shù),不包含右邊
print(i)
#會發(fā)現(xiàn)在java用‘{’的地方管削,python使用‘:’表示
#比如if倒脓,class,for佩谣,while把还,定義函數(shù)時等等
相比之下會發(fā)現(xiàn)实蓬,python的語法更加接近我們英語語法茸俭,for i 對于每個i 在0-9(不包含9)中。
while循環(huán)
java:
while(int i < 9){
System.out.print(i);
i--;
}
python:
while i>0 :
print(i)
i = i-1 #注意python中沒有自加自減
函數(shù)定義
現(xiàn)在我們定義一個filter函數(shù)安皱,只保留數(shù)組中的偶數(shù)
a = [1,2,3,4,5,6,7,8,9]
def filter(l): #def表示定義函數(shù)
x=[]
for i in range(0,len(l)): #len函數(shù)獲取數(shù)組長度
if l[i]%2 == 0:
x.append(l[i]) #.append往數(shù)組中加元素
return x
然后比較魔性的寫法
def filter(l):
return [x for x in l if x%2 == 0]
遞歸函數(shù)
定義一個函數(shù)求出一個數(shù)字的階乘
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的構(gòu)造函數(shù)调鬓,使用這個類,必須傳入一個name的參數(shù)酌伊,然后里面還定義了一個getName()函數(shù)腾窝,得到這個類的name參數(shù)值
a = Person("abc") #新定義一個變量名為a的Person類,里面的name值為abc
a.asd = 123 #與java不同的是居砖,可以隨時忘類中加入新的參數(shù)和值
print(a.name, a.asd)
改寫Python的原有函數(shù)
Python可以將print這類基礎(chǔ)函數(shù)改寫虹脯,但是java做不到
oldPrint = print
def myprint(x):
oldPrint(":::", x)
print = myprint
print("ashdhabsd") #結(jié)果::::ashdhabsd
print(345) #結(jié)果::::345
Map函數(shù)
map(函數(shù)名,數(shù)組)
比如我有一個power平方函數(shù)和int數(shù)組a[1,2,3]
a=list(map(power,a))
[1,4,9] 注意這里用map必須在前面加list轉(zhuǎn)換奏候,否則顯示的不是數(shù)組
Lambda函數(shù)
Lanbda可以免去在外面定義函數(shù)循集,一些簡單只需要用一次的函數(shù)可以直接寫在表達(dá)式中
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對應(yīng)一個value
a = {"name":"abc","age":17}
a ['sex']='male' #為字典中加入新的元素
判斷key或者value是否在字典中
"name" in a #ture
"abc" in a #false in a 默認(rèn)是keys的集合
"abc" in a.values() #ture
不僅僅只是字典,其他字符串也可以同樣操作
a = "hello 12 3 abc"
"abc" in a #true