【Python】基礎好用又不熟悉的語法

這是一篇關於Python基礎知識的總結,內容過於基礎的就沒有寫,主要是一些自己不太熟悉的語法總結,本文適合複習鞏固Python基礎。

註釋

# 函數的文檔註釋
def func():
    """
    我是包含換行符\\n的文檔註釋
    直接回車換行
    可以用\'''也可以用\"""包括
    """
    return 0
# 打印函數註釋
print(func.__doc__)
我是包含換行符\n的文檔註釋
直接回車換行
可以用'''也可以用"""包括   

單行註釋用#

多行註釋用'''或者"""

隨機數

import random
# random.choice(seq),seq可以是一個列表,元組或字符串
print (random.choice(range(100)))
 
# 從 1-100 中選取一個奇數
print (random.randrange(1, 100, 2))

# 產生0-1之間的隨機數
print(random.random())

# 隨機產生一個5-10之間的實數
print(random.uniform(5,10))

# 產生0-100之間的隨機整數
print(random.randint(0,100))

運行結果:

0
9
0.5606299188878712
6.332070251535839
22

字符串

# 字符串的格式化
name='Vigilr'
sex='男'
print('姓名:%s\n性別:%s'%(name,sex))

運行結果:

姓名:Vigilr
性別:男
符號 描述
%s 格式化字符串
%d 格式化整數
%u 格式化無符號整型
%o 格式化無符號八進制數
%x 格式化無符號十六進制數
%X 格式化無符號十六進制數(大寫)
%f 格式化浮點數字,可指定小數點後的精度
%e 用科學計數法格式化浮點數
# 用"""表示多行字符串
str1="""我是第一行
我是第二行,此處爲換行符\n
理論上,我是第三行
"""
print(str1)

運行結果:

我是第一行
我是第二行,此處爲換行符

理論上,我是第三行

可以使用f'字符串'替換字符串中的變量,變量用{}括起來

f'姓名:{name}'

運行結果:

'姓名:Vigilr'

常用方法

# find(str, beg=0, end=len(string)),
# 檢測 str 是否包含在字符串中,如果指定範圍 beg 和 end ,則檢查是否包含在指定範圍內,如果包含返回開始的索引值,否則返回-1
print('name:vigilr'.find('vigilr'))

# index(str, beg=0, end=len(string)),跟find()方法一樣,只不過如果str不在字符串中會報一個異常.

# isdigit(),如果字符串只包含數字則返回 True 否則返回 False..
print('123456'.isdigit())

# islower(),如果字符串中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是小寫,則返回 True,否則返回 False
print('islower()'.islower())

# isupper(),如果字符串中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是大寫,則返回 True,否則返回 False
print('isupper()'.isupper())

# join(seq),以指定字符串作爲分隔符,將 seq 中所有的元素(的字符串表示)合併爲一個新的字符串
print('-'.join(['hello','world','!']))

# len(string),返回字符串長度
print(len('len(string)'))

# lower(),轉換字符串中所有大寫字符爲小寫.
print('str.LOWER'.lower())

# upper(),轉換字符串中的小寫字母爲大寫
print('str.upper'.upper())

# max(str),返回字符串 str 中最大的字母。
print(max('max(str)'))

# split(str="", num=string.count(str)),num=string.count(str)) 以 str 爲分隔符截取字符串,如果 num 有指定值,則僅截取 num+1 個子字符串
print('split 方法 以空格截取 字符串'.split(' '))

運行結果:

5
True
True
False
hello-world-!
11
str.lower
STR.UPPER
x
['split', '方法', '以空格截取', '字符串']

列表

列表的基本用法

l=['a','b','c','d']
print('原始列表:',l)
l[2]='h'
print('修改後的列表:',l)
l.append('e')
print('增加後的列表',l)
del l[2]
print('刪除索引爲2的元素',l)

運行結果:

原始列表: ['a', 'b', 'c', 'd']
修改後的列表: ['a', 'b', 'h', 'd']
增加後的列表 ['a', 'b', 'h', 'd', 'e']
刪除索引爲2的元素 ['a', 'b', 'd', 'e']

列表的更加高級的用法

# list.count(obj)
print('l中a出現的次數',l.count('a'))

# list.index(obj),從列表中找出某個值第一個匹配項的索引位置
print(l.index('d'))

# list.insert(index, obj),將對象插入列表
l.insert(3,['a','c','v'])
print(l)

# list.remove(obj),移除列表中某個值的第一個匹配項
l.remove(['a','c','v'])
print(l)

# list.reverse(),反向列表中元素
l.reverse()
print(l)

# list.sort( key=None, reverse=False),對原列表進行排序l.sort()
l.sort()
print(l)

# list.copy(),複製列表
l1=l.copy()
print(l1)

# list.clear(),清空列表
l.clear()
print(l)

運行結果:

l中a出現的次數 1
2
['a', 'b', 'd', ['a', 'c', 'v'], 'e']
['a', 'b', 'd', 'e']
['e', 'd', 'b', 'a']
['a', 'b', 'd', 'e']
['a', 'b', 'd', 'e']
[]

元組與列表的操作基本類似,區別就是元組的元素不可修改

字典

dict1={'id':123456,'name':'Vigilr','sex':'男','age':23}
print(dict1)
# len(dict),計算字典元素個數,即鍵的總數。
print(len(dict1))
# str(dict),輸出字典,以可打印的字符串表示。

運行結果:

{'id': 123456, 'name': 'Vigilr', 'sex': '男', 'age': 23}
4

通過dir(dict1)查詢到的方法如下,

['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

個人不太常用字典,所以就不多做介紹了

集合

集合是一個無序的不重複元素序列。

可以使用大括號{}或者set()函數創建集合

創建一個空集合必須用set()而不是{},因爲{}是用來創建一個空字典。

set1={'a','b','c','d'}
print('原始集合:',set1)

set1.add('e')
print('添加元素後的集合:',set1)

# 添加列表或元組中的元素
set1.update([1,2])
print('添加列表中的元素:',set1)

# 刪除元素,不存在會發生異常
set1.remove('a')
print('刪除"a"元素',set1)

# 隨機刪除一個元素
set1.pop()
print('隨機刪除一個元素',set1)

運行結果:

原始集合: {'b', 'd', 'a', 'c'}
添加元素後的集合: {'c', 'b', 'a', 'e', 'd'}
添加列表中的元素: {1, 2, 'c', 'b', 'a', 'e', 'd'}
刪除"a"元素 {1, 2, 'c', 'b', 'e', 'd'}
隨機刪除一個元素 {2, 'c', 'b', 'e', 'd'}

迭代器,生成器

迭代器有兩個基本的方法:iter() 和 next()。

# 迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。
list=[1,2,3,4]
it = iter(list)
print(next(it))
for x in it:
    print (x, end=" ")

運行結果:

1
2 3 4 

跟普通函數不同的是,生成器是一個返回迭代器的函數,只能用於迭代操作,更簡單點理解生成器就是一個迭代器。

在調用生成器運行的過程中,每次遇到 yield 時函數會暫停並保存當前所有的運行信息,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續運行。

def fibonacci(n):
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1

f = fibonacci(10) 
 
for i in range(10):
    print (next(f), end=" ")

運行結果:

0 1 1 2 3 5 8 13 21 34 

匿名函數

lambda 函數的語法:lambda [arg1 [,arg2,.....argn]]:expression

# 可寫函數說明
sub = lambda arg1, arg2: arg1 - arg2
 
# 調用sub減法函數
print ("1-1 的結果爲 ", sub( 1 ,1 ))

運行結果:

1-1 的結果爲  0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章