日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python elseif用法_python学习笔记(一)

發布時間:2025/3/21 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python elseif用法_python学习笔记(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0、前言

本文是根據廖雪峰python教程學習總結而來。 參考《python學習手冊》,《流暢的python》以及python官方手冊等網絡資料
略過了與C和C++ 語言相同的語法部分

1、轉義方式

python的字符串可以用雙引號和單引號,作用是相同的。轉義的方式和C差不多。不同的是,如果想讓一個字符串里面的字符都不用轉義的話,可以在字符串前面加字母r來聲明。
例如

r'tttt'

里面的內容都無需轉義。
或者使用3個引號來把字符串包起來,這樣也不需要轉義了,而且中間還可以換行。
例如

'''123ttt'''

2、字符串的占位符

百分號占位符

和C語言一樣,都是使用百分號占位,但是不同的是,python里面占位符對應的數據也需要百分號來標志,而且占位符對應的數據與字符串之間不需要加逗號。
例如

print ("我叫%s,今年%d歲,工作%d年了" %('冰封飛飛', 18, 2))

format格式化占位符

還有一種新的占位符使用{0}占位,有點像C#的格式化字符串操作。 python官方手冊str.format部分

print('{0:,.3f} {1},{name}, {2},'.format(99999.12345, '嘎嘎',[1,2,3,4], name='123'))

輸出:

99,999.123 嘎嘎,123, [1, 2, 3, 4],

3、布爾值

True False表示真假,布爾運算是and or not,這點與C語言不同

4、if判斷

與C語言不同的是,if和else后面都加冒號,else if變成了elif…

a = 10 b = 20 if a > b :print (a > b) elif a == b:print (a == b) else:print (a < b)

5、除法運算

C語言中,兩個整數相除的結果還是整數,而在python中,結果是一個浮點數。
如果想讓兩個整數相除的結果變成整數的話,需要用地板除的方式,雙斜線
例如:

10//3

結果是3

6、list

list有點像是C++ 中的vector,可以動態的添加和刪除元素。是一個有序的表。可以對一個list使用len來獲取長度。與C++ 不同,C++ 是強類型的語言,vector中只能包含相同類型的元素,而python的list中可以包含不同類型的對象,還可以包含另一個list。
list使用中括號來表示
例如:

['123', '234', '345]

通過索引訪問list時,還可以使用負數,-1就是取最后一個元素

a=['123', '234', '345'] a[-1]

輸出345
在后面追加元素,相當于C++ 中vector的push_back,在python中是append
例如

a.append('666')

在中間插入元素,相當于C++ 的insert,在python也是insert 例如a.insert(1, '777') 在索引號1的地方插入'777' 在末尾刪除元素,相當于C++ 的pop_back,在python中是pop 例如

a.pop()

刪除指定索引的元素,在C++ 中無法通過索引直接刪除vector的元素,需要使用迭代器,在python中也用pop刪除指定位置的元素
例如

a.pop(1)

刪除索引1的元素

stack

python中沒有單獨的stack對象,可以使用list作為stack然后只使用append和pop方法來模擬入棧出棧

queue

隊列在queue.Queue中

import queue q = queue.Queue() q.put(1) num = q.get() #獲取元素,然后刪除元素 q.empty()

7、tuple

tuple類似于C++ 中的tuple,和python的list也很像,只不過tuple一旦創建就不能更改里面的內容了。
tuple可以隱式轉換為單個變量例如:

a, b, c = (1, 2, 3) print(a, b, c)

輸出:

1 2 3

也可以使用封包

first, *rest = (1,2,3,4) print(first) print(rest)

輸出

1 [2, 3, 4]

8、輸入輸出

輸出函數和C語言類似使用

print ("hello world")

輸入函數與C和C++ 都比較不同,使用input來獲取輸入的內容 例如

name = input("input your name")

9、數字字符串轉換

在C和C++ 中數字轉字符串比較麻煩,一般在C語言中可以使用sprintf。C++ 直接使用to_string。 字符串轉數字的話,C語言可以使用atoi,C++ 可以使用stringstream。 在python中可以直接使用int() float() str()轉換 例如:

a = int('123') b = float('12.3) c = str(123.3)

10、循環

python中有兩種循環,一種是for循環一種是while循環。和C、C++ 中的不太一樣。沒有do while循環
for循環:類似于C++中的for (auto i : vec)這種range-based的for循環

for x in range(10):print(x)

while循環:和C、C++中的while循環類似

while x < 10:print(x)x += 1

python的循環中同樣可以使用continue和break來終止循環

11、字典dict

字典類似與C++ 中的unordered_map,是一種哈希表的key-value的查找結構。
使用大括號來表示:

score = {"Mike":100, "冰封飛飛":100, "Fvck":88}

判斷一個key在不在字典里面可以使用
"冰封飛飛" in score
返回結果是True或者False
刪除一個元素使用pop方法。score.pop("冰封飛飛")
插入一個元素和C++一樣直接可以score["new"] = 100
查找操作可以使用get操作,因為如果key不存在的時候,直接使用score["nonexist"]會報錯。
get操作還可以指定默認值,如果查找不到key的話,返回默認值

s = {} print(s.get('a', '3'))

結果:

3

遍歷dict:

for (k, v) in score.items():print("%s:%d" % (k, v))

12、集合set

集合類似與C++ 中的unordered_ser,是一種哈希表的集合結構。
如果要創建set,需要提供一個list作為輸入集合。
s = set([1, 2, 2, 3]) 初始化時,自動會去重元素。
結果是s = {1, 2, 3}
添加元素使用add方法,刪除元素使用remove方法

s.add(4) s.remove(4)

集合類似于數學上的集合,有交集和并集的操作,
s1 & s2, s1 | s2

13、函數

函數名是一個指向函數對象的引用,下面可以直接將函數賦值一個別名

a = abs a(-10)

而且函數名本身也是一個變量,可以賦值

abs = 10 abs(-10)

這樣執行的話,abs(-10)就會報錯了。

python包含了很多內置的函數,可以從python官方手冊查看
函數的定義使用def

def myFunc(a, b):return a + b

空語句可以使用pass,類似于C/C++ 中的分號
可變參數:在參數前面加一個星號,就變成了可變參數,可以傳入任意個數的參數,實際上是自動封裝成了一個tuple。

可變參數

def myFunc(*num):result = 0for i in num:result += ireturn result

調用時可以myFunc(1, 2, 3)這樣調用, 也可以傳入一個list或者tuple

param = [1, 2, 3] myFunc(*param)

關鍵字參數

def func(a, b, **kw):print(kw)

這個函數里面第三個參數是**kw,實際上是一個字典。
調用時可以這樣調用:func(1, 2, name="123", age=18)
參數傳進去時,實際上a = 1, b = 2 kw = {"name":"123", "age":18}
也可以直接傳一個dict作為第三個參數,但是前面需要加兩個星號

kw = {"name":"123", "age":18} func(1, 2, **kw)

關鍵字參數必須跟在位置參數后面。下面的調用方式是不合法的。

def func(a, b=1, c=2):print(a, b, c) func(a=1, 2)

命名關鍵字參數:

def func(a, b, *, name, job):print(name)print(job)

在上面關鍵字參數,無法控制**kw傳入的key是什么。使用關鍵字參數可以控制可以傳入哪些key。需要使用一個星號作為分隔符。星號后面定義可以傳入的key的名稱。

func(1, 2, name="1", job=2) -> OK func(1, 2, job = 3) -> ERROR

這個星號必不可少,如果正好有一個可變參數,那就不需要額外的星號了
def func(a, b, *args, name, job):也是可以的

參數組合

定義函數的時候可以使用多重參數組合,定義的順序是,必選參數,默認參數,可變參數,命名關鍵字參數和關鍵字參數

def f1(a, b = 0, *args, **kw) def f2(a, b = 0, *, d, **kw)

對于任意的函數都可以使用一個tuple和一個dict來組織參數調用。類似于func(*args, **kw)

函數注釋/注解

函數注釋是3.X新加入的功能,可以給函數每一個參數添加一個注釋,以及標記返回值的類型。

def func(a:'spam', b:(1,10),c:float=2.5) -> int:return a + b + c

注解實際上是把上面添加的內容,寫入到了函數的__annotations__方法中。 可以使用

print(func.__annotations__)

打印函數注解,結果如下

{'a': 'spam', 'b': (1, 10), 'c': <class 'float'>, 'return': <class 'int'>}

匿名函數lambda

lambda比def功能要小,lambda僅能編寫簡單的函數,連if也不能使用,也不能寫return,返回值就是表達式的結果

f = lambda x, y, z : x + y + z

裝飾器

裝飾器是一種委托的調用方式,將被裝飾的函數包裝一層,增加一些定制處理。 裝飾器的用法如下,@log是一個語法糖,相當于test = log(test),將test函數替換為wrapper函數。
@functools.wraps(func)是系統幫忙做的一些處理,可以讓裝飾后的函數和原函數看起來一致。例如:包裝后的函數__name__還是顯示和原函數一致,不會顯示為wrapper函數的__name__

import functoolsdef log(func):@functools.wraps(func)def wrapper(*args, **kw):print('<trace {0}: {1}({2})>'.format(time.ctime(), func.__name__, args, kw))return func(*args, **kw)return wrapper @log def test(a): print('test func:{0}'.format(a)) def main():test(5) if __name__ == '__main__':main()

結果:

<trace Fri Oct 5 22:10:38 2018: test((5,))> test func:5

偏函數

偏函數類似與C++ 中的bind,可以將函數的某些參數固定下來,生成一個新的函數。

import functools int2 = functools.partial(int, base=2) print(int2('10101'))

結果:

21

14、切片

通過切片操作可以很方便的將list,tuple,string中一段對象取出來。python沒有提供substr的函數,字符串的取子串的操作都使用切片來進行

L = list(range(10)) print("L = %s " % L) print("L[0:3] = %s " % L[0:3]) print("L[:3]= %s " % L[:3]) print("L[-2:] = %s " % L[-2:]) print("L[-2:-1] = %s " % L[-2:-1]) print("L[:10:2] = %s " % L[:10:2]) print("L[:] = %s " % L[:])

結果:

L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] L[0:3] = [0, 1, 2] L[:3]= [0, 1, 2] L[-2:] = [8, 9] L[-2:-1] = [8] L[:10:2] = [0, 2, 4, 6, 8] L[:] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

切片是一個左閉右開的區間,例如L[0:3],獲取[0, 3)區間的元素。
第二個冒號之后的數字是步長,可以相隔步長來取數
只包含一個冒號就是獲取變量本身

15、迭代

python的迭代使用for,10循環中說過一些for的內容。類似于C++ 的for(auto i : vec)這種形式的迭代。不是基于下標迭代。

迭代字典dict

d = {'a' : 1, 'b' : 2} for key in d:print (key) for value in d.values():print (value) for k, v in d.items():print('%s : %d' % (k, v))

輸出結果:

a b 1 2 a : 1 b : 2

對于字典,for迭代只會迭代key,如果迭代value的話需要使用d.values()作為迭代對象。如果迭代key-value的話,需要使用d.items()作為迭代對象 判斷一個變量是否能迭代,使用下面代碼判斷。

from collections.abc import Iterable d = {'a' : 1, 'b' : 2} print(isinstance(d, Iterable)) print(isinstance(1, Iterable))

輸出

True False

下標循環

使用enumerate可以將一個可迭代的對象轉換為下標+對象的tuple來迭代

from collections.abc import Iterable d = {'a' : 1, 'b' : 2} for i in enumerate(d.items()):print(i)

輸出

(0, ('a', 1)) (1, ('b', 2))

這個迭代器我用的是i一個元素,這時候i就變成了一個tuple,如果使用兩個元素的話,會將這個tuple拆分到兩個元素上面去 例如改為:

for i, v in enumerate(d.items()):print('%s : %s' % (i, v))

結果就是

0 : ('a', 1) 1 : ('b', 2)

應用迭代的函數

sorted

對參數進行排序

L = [3, 2, 4, 1] L = sorted(L) print (L)

結果

[1, 2, 3, 4]

zip

將參數相同索引的數據組成一個tuple,如果幾個參數的數量不同,按最小的算

L = [1, 2, 3, 4] S = ['a', 'b', 'c', 'd', 'e'] Z = zip(L, S) print (list(Z))

結果

[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]

enumerate

將參數返回一個索引+數據的tuple

S = ['a', 'b', 'c', 'd', 'e'] print (list(enumerate(S)))

結果

[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')]

filter

將可迭代對象按照參數1,進行過濾。

def isInt(x):if isinstance(x, int):return Trueelse:return False def main(): S = [1, 2, 3.0, 4.1, '5', (6,)]print (list(filter(isInt, S))) if __name__ == "__main__":main()

結果

[1, 2]

map

類似于C++ 中的使transform,用參數1中的函數,對后面的參數進行迭代運算,如果后面迭代對象數量不一致,按最小的算。

def add(x, y):return x + y def main(): S = [1, 2, 3.0, 4.1]L = [2, 3, 4, 5, 6]print (list(map(add, S, L))) if __name__ == "__main__":main()

結果

[3, 5, 7.0, 9.1]

reduce

類似于C++ 中的accumulate,使用參數1中的函數,對后面的參數進行累加運算,得到一個結果。

from functools import reduce def main(): d = reduce(lambda x, y : x + y, range(101))print(d) if __name__ == "__main__":main()

結果

5050

sum

對參數求和

any

對參數全部進行or運算

all

對參數全部進行and運算

max

求參數最大值

min

求參數最小值

歡迎大家關注我們的公眾號,一起學習、探討

總結

以上是生活随笔為你收集整理的python elseif用法_python学习笔记(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。