"""
公司主營(yíng)業(yè)務(wù):網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出陽明免費(fèi)做網(wǎng)站回饋大家。
使用global子句。在stisfiesF函數(shù)中,聲明L為一個(gè)全局變量,如此
你在該函數(shù)中修改L的值,則會(huì)體現(xiàn)到函數(shù)之外。這種寫法違背Python
優(yōu)雅的原則,不推薦使用,僅供學(xué)習(xí).【L中的元素不能有數(shù)字,否則
報(bào)錯(cuò),我也不知什么原因】
"""
def?f(s):
return?'av'?in?s
#?在聲明L為全局變量之前定義,代碼更直觀
L?=?['av1',?'av',?'a','b','ac','love','python',('f','av','gh'),[1,2,3]]
#?此處函數(shù)不傳入?yún)?shù)L
def?satisfiesF():
#?聲明L為全局變量
global?L
x?=?[]
for?i?in?L:
if?f(i):?????
x.append(i)
else:
pass
L?=?x
return?len(L)
print?('新列表L的長(zhǎng)度為%s'%satisfiesF())
print?('將原列表修改為元素含有"av"的新列表L:')
print(L)
"""
結(jié)果:新列表L的長(zhǎng)度為3
將原列表修改為元素含有"av"的新列表L:
['av1',?'av',?('f',?'av',?'gh')]
"""
1. 字符串字母處理
2. 字符串填充
str.ljust(width, fillchar)、str.center(width, fillchar)、str.rjust(width, fillchar)
返回一個(gè)指定的寬度 width 「居左」/「居中」/「居右」的字符串,如果 width 小于字符串寬度直接返回字符串,否則使用 fillchar 去填充。
3,字符串計(jì)數(shù)
str.count(sub, start, end)
#統(tǒng)計(jì)字符串里某個(gè)字符出現(xiàn)的次數(shù)。可選參數(shù)為在字符串搜索的開始與結(jié)束位置。
start, end遵循**“左閉右開”**原則。
4. 字符串位置
str.endswith(suffix, start, end)和str.startswith(substr, beg, end)
#判斷字符串是否以指定后綴結(jié)尾/開頭,如果以指定后綴「結(jié)尾」/「開頭」返回 True,否則返回 False。
5. 字符串查找
6. 字符串判斷
7. 字符串拼接
str.join() #將序列中的元素以指定的字符連接生成一個(gè)新的字符串。
s1 = "-" s2 = "" seq = ("r", "u", "n", "o", "o", "b")
# 字符串序列 print (s1.join( seq )) print (s2.join( seq )) r-u-n-o-o-b runoob
8. 統(tǒng)計(jì)字符串長(zhǎng)度
str.len() #返回對(duì)象(字符、列表、元組等)長(zhǎng)度或項(xiàng)目個(gè)數(shù)。
9. 去除字符兩側(cè)空格
str.lstrip()、str.rstrip()、str.strip() #截掉字符串「左邊」/「右邊」/「左右」兩側(cè)的空格或指定字符。
str0 = ' Hello World!' str0.lstrip() 'Hello World!' str1 = 'aaaa Hello World!' str1.lstrip('a') ' Hello World!'
10. str.maketrans(intab, outtab)和str.translate(table)
str.maketrans()創(chuàng)建字符映射的轉(zhuǎn)換表
str.maketrans()根據(jù)參數(shù)table給出的表轉(zhuǎn)換字符串的字符。
str.maketrans()傳入的也可以是字典
tab = {'e': '3', 'o': '4'} trantab = str.maketrans(tab) str0.translate(trantab) 'H3ll4 W4rld!'
11. 字符串替換
str.replace(old, new, max)
12. 字符分割
str.split(str, num)
13. 字符填充
str.zfill(width)
返回指定長(zhǎng)度的字符串,原字符串右對(duì)齊,前面填充0。
使用Python的ctypes,我們可以直接調(diào)用由C直接編譯出來的函數(shù)。其實(shí)就是調(diào)用動(dòng)態(tài)鏈接庫中的函數(shù)。為什么我們需要這樣做呢,因?yàn)橛行r(shí)候,我們可能需要一個(gè)性能上比較講究的算法,有些時(shí)候,我們可以在Python中使用已經(jīng)有了的現(xiàn)成的被封閉在動(dòng)態(tài)鏈接庫中的函數(shù)。下面是如何調(diào)用的示例。
首先,我們用一個(gè)乘法來表示一個(gè)算法功能。下面是C的程序:
int?multiply(int?num1,?int?num2){???
return?num1?*?num2;
}????
如果在Windows下,你可能需要寫成下面這個(gè)樣子:
#include?windows.h?
BOOL?APIENTRYDll
Main(HANDLE?hModule,?DWORD?dwReason,?LPVOID?lpReserved){????
return?TRUE;
}?
__declspec(dllexport)?
intmultiply(int?num1,?int?num2){?
return?num1?*?num2;
}????
然后,自然是把這個(gè)C文件編成動(dòng)態(tài)鏈接庫:
Linux下的編譯:
gcc?-c?-fPIC?libtest.c
gcc?-shared?libtest.o?-o?libtest.so????
Windows下的編譯:
cl?-LD?libtest.c?-libtest.dll????
于是在我們的Python中可以這樣使用:
(其中的libtest.so在Windows下改成libtest.dll即可)
from?ctypes?import?*
import?os
libtest?=?cdll.LoadLibrary(os.getcwd()?+?'/libtest.so')
print?libtest.multiply(2,?2)4????
注意:上面的Python腳本中需要把動(dòng)態(tài)鏈接庫放到當(dāng)前目錄中。