Python大佬 | 菜鳥進(jìn)階必備的九大技能!
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
解決問題和提出問題; XY問題; 理解代碼為何起作用(或不起作用); 使用字符串; 使用列表; 使用循環(huán); 使用函數(shù)(并正確談?wù)摵瘮?shù)); 面向?qū)ο缶幊蹋?/section> 尊重PEP。
如果想要了解更多關(guān)于編程提問的技能,我另有一篇文章,鏈接如下(英文):How to Ask Questions About Programming:https://medium.com/better-programming/how-to-ask-questions-about-programming-dcd948fcd2bd
“我需要從字符串中提取最后3個(gè)字符。” “不,你不需要。只需文件擴(kuò)展名。”
def extract_ext(filename):return filename[-3:]print (extract_ext('photo_of_sasquatch.png'))png
def extract_ext(filename):return filename.split('.')[-1]print (extract_ext('photo_of_sasquatch.png'))print (extract_ext('photo_of_lochness.jpeg'))pngjpeg


使用字符串
word = 'supergreat'print (f'{word[0]}')sprint (f'{word[0:5]}')super


filenames = ['lochness.png' , 'e.t.jpeg' , 'conspiracy_theories_CONFIRMED.zip']# 1: Using ENDSWITHfor files in filenames:if files.endswith('zip'):print(f'{files} is a zip file')else:print (f'{files} is NOT a zip file')# 2: Using SPLITfor files in filenames:if files.split('.')[-1] == 'zip':print(f'{files} is a zip file (using split)')else:print (f'{files} is NOT a zip file (using split)')
my_list = ['a' , 'b' , 'n' , 'x' , 1 , 2 , 3, 'a' , 'n' , 'b']for item in my_list:print (f'current item: {item}, Type: {type(item)}')

print (my_list.sort())

如果我們想把整數(shù)與字母分開要怎么做?一種方式是通過循環(huán)來實(shí)現(xiàn),我們可以遍歷列表中的所有項(xiàng)目。初學(xué)者很早就會使用循環(huán)了,循環(huán)對于編程也很重要。 代碼可能是下面這樣的: my_list = ['a' , 'b' , 'n' , 'x' , 1 , 2 , 3 , 'a' , 33.3 , 'n' , 'b']number_list = []string_list = []for item in my_list:print (f'current item: {item}, Type: {type(item)}')if not isinstance(item,str):number_list.append(item)else:string_list.append(item)my_list = string_list即便有些混亂,這也是一種有效的方式,可以運(yùn)行,不過經(jīng)過重構(gòu)可以用單行來表示! 如果想要生活多些樂趣,請學(xué)習(xí)Python的列表解析式下面是同樣問題通過列表解析式得出的: my_list = [letter for letter in my_list if isinstance(letter,str)]就是這樣! 還沒結(jié)束!使用過濾器也可以獲得同樣的結(jié)果: def get_numbers(input_char):if not isinstance(input_char,str):return Truereturn Falsemy_list = [1,2,3,'a','b','c']check_list = filter(get_numbers, my_list)for items in check_list:print(items)
names = ['First' , 'Middle' , 'Last']print(names[::-1])> ['Last', 'Middle', 'First']
在列表中加入元素:
names = ['First' , 'Middle' , 'Last']full_name = ' '.join(names)print(f'Full Name:\n{full_name}')First Middle Last6. 使用循環(huán):
greek_gods = ['Zeus' , 'Hera' , 'Poseidon' , 'Apollo' , 'Bob']for index in range(0,len(greek_gods)):print (f'at index {index} , we have : {greek_gods[index]}')
for name in greek_gods:print (f'Greek God: {name}')
for index, name in enumerate(greek_gods):print (f'at index {index} , we have : {name}')

使用函數(shù)(并正確談?wù)摵瘮?shù))

def print_list(input_list):for each in input_list:print(f'{each}')print() #just to separate outputgreek_gods = ['Zeus' , 'Hera' , 'Poseidon' , 'Apollo' , 'Bob']grocery_list = ['Apples' , 'Milk' , 'Bread']print_list(greek_gods)print_list(grocery_list)print_list(['a' , 'b' , 'c'])

def reverse_list(list_input):return list_input[::-1]my_list = ['a', 'b' , 'c']print (reverse_list(my_list))> ['c', 'b', 'a']
class Student():def __init__(self,name):self._name = nameself._subject_list = []
如果想要?jiǎng)?chuàng)建一個(gè)student,可以像這樣將其分配給變量:student1 = Student('Martin Aaberge')如果需要更多student,可以使用同一個(gè)類并添加另外的姓名:student2 = Student('Ninja Henderson')`student1`和`student2`都是student類的實(shí)例,它們共享同一個(gè)藍(lán)圖,但彼此之間并無關(guān)系。此時(shí),我們對學(xué)生們能做的不多,但我們確實(shí)增加了一個(gè)主題列表。要填充此列表,我們需要?jiǎng)?chuàng)建方法,你可以調(diào)用方法來實(shí)現(xiàn)與該類實(shí)例的交互。我們更新:class Student():def __init__(self,name):self._name = nameself._subject_list = []def add_subject(self, subject_name):self._subject_list.append(subject_name)def get_student_data(self):print (f'Student: {self._name} is assigned to:')for subject in self._subject_list:print (f'{subject}')print()這個(gè)類可以用于創(chuàng)建、編輯學(xué)生信息,并獲取我們存在其中的信息:#create students:student1 = Student('Martin Aaberge')student2 = Student('Heidi Hummelvold')#add subjects to student1student1.add_subject('psychology_101')student1.add_subject('it_security_101')#add subject to student2student2.add_subject('leadership_101')#print current data on studentsstudent1.get_student_data()student2.get_student_data()
from student import Studentstudent1 = Student('Martin')student1.add_subject('biomechanics_2020')student1.get_student_data()


chocolate_cake = 'yummy'chocolateCake = 'Yummy好消息!
小白學(xué)視覺知識星球
開始面向外開放啦??????
下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程 在「小白學(xué)視覺」公眾號后臺回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。 下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講 在「小白學(xué)視覺」公眾號后臺回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計(jì)數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。 下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講 在「小白學(xué)視覺」公眾號后臺回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。 交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計(jì)算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~
評論
圖片
表情


