主题: Enoch Kan : 您今天需要了解的五个Python技巧
БудьвыстаршиминженеромAIилистудентомпервогокурсабиологии— pythonраноилипоздновыстон Послерелиза,大约1991年,Python的быстросталлюбимымязыкомпрограммистовитехнологов。 Согласнорейтингу堆栈溢出,основанномунапроявленииинтересакязыкам,вразвитыхстранах,pythonбыстронабира。


Python —высокоуровневый,интерпретируемыйязыксотносительнопростымсинтаксисом,идеальнопедате ПопулярныебиблиотекиPython中,хорошоинтегрированыииспользуютсявразличныхобластях,напримервбиоинформатике(biopython),наукеоданных(熊猫),машинномобучении(keras / tensorflow)идажевастрономии(astropy)。 ПослеизученияCиJava,在python上,委内瑞拉人 Кодвыполняетсягораздомедленнее,чемв的Javaидругихязыках,темнеменее的Pythonнасамомделеповышаетпродуктивность,благодаряхорошоналаженнойинтеграциипроцессов。
Уловка№1:Сила«однострочников»(单线)
Выусталипробиратьсямеждустроккодаитерятьсявусловныхконструкциях? Тогда,однострочникиPython —этото,чтовамнужно。 Например,такаяконструкция:
>>>如果 alpha> 7:
>>> Beta = 999
>>> elif alpha == 7:
>>> Beta = 99
>>>其他 :
>>> beta = 0
можетбытьупрощена:
>>> beta = 999 如果 alpha> 7 else (beta == 99 如果 alpha == 7 else 0)
Досмешногопросто! Еслиуделятьбольшевниманиякоду,которыйвыпишите,всегданайдетсяместо,гдеможноноуоростить。 Кромеусловныхконструкций,упрощатьможноициклы。 Например,удвоениеспискацелочисленных,вчетырехстроках:
>>> lst = [1、3、5]
>>>翻倍= []
>>> 对于 num in lst:
>>> doubled.append(num * 2)
можноупроститьдооднойстроки:
>>>翻倍= [num * 2 for num in lst]
Конечно,есливсюдуиспользоватьоднострочники,этобудетвыглядетьнеопрятно。 Старайтесьнепереусердствоватьссокращениямивсвоёмкоде,кто-тодажескажет,чтоорикоеприм
>>>导入 pprint; pprint.pprint(zip((('Byte','KByte','MByte','GByte','TByte'),(1 << 10 * i for i in xrange(5))))
Уловка№2:Быстрыедействиясостроками
Манипуляциисострокамипоройвызываютсложности,由Pythonестьсокращения,которыеоблегчатвизин。 ,тобысделатьреверсстроки,простодобавьте ::-1 1вкачествеспискаиндексов。
>>> a =“ ilovepython”
>>>打印一个[::-1]
诺型
Такуюуловкуможноприменитьикспискусчислами。 使用Python的Манипулировать,чрезвычайнопросто。 Например,вамнужновывестипредложение,используяпредопределённыепеременные: str1 , str2和lst3
>>> str1 =“完全”
>>> str2 =“太棒了”
>>> lst3 = [“ Omg”,“ You”,“ Are”]
Простоиспользуйтеметод.join .join() иарифметическиеоператоры,чтобысоздатьнужноепредложение。
>>>打印 ''.join(lst3)
天哪,你是
>>>打印 ''.join(lst3)+''+ str1 +''+ str2
天哪,你真的很棒
Кромедействийсостроками,рекомендуюизучитьбольшеоregex(регулярныхвыражениях),тере
Уловка№3Комбинациивложенныхсписков
使用Python的Пожалуй,однаизмоихлюбимыхбиблиотек itertools. тобыпреобразитькод,содержащийдесяткисписков,вглубоковложенныйсписок,достатоннинесколь。 itertools чтовамнужно,чтобырешитьэтузадачу。
>>>导入 itertools
>>>展平= lambda x:list(itertools.chain.from_iterable(x))
>>> s = [['“','An','投资'],['in'],['知识'],['支付'],['the','最佳'],['兴趣。“','-'],['Benjamin'],['Franklin']]
>>>打印 (''.join(flatten(s)))
“对知识的投资才是最大的利益。” - 本杰明·富兰克林
Изприведенноговышепримеравидно,какмыможемобъединитьвложенныеспискиистрокиспомощью。 join()和itertools 。 Метод.combinations .combinations() избиблиотекиitertools,мощныйинструмент,длявозвратадлиныпоследовательноиеэлементов Нажмитездесь,чтобыузнатьбольшеобitertools。
Уловка№4Простыеструктурыданных
Возвращаяськпункту№1 。 Однострочником,Python和такжеоченьпростовызватьинициализациюструктурданных。 ГарольдКупер,реализовалоднострочнуюдревовиднуюструктуру,используяследующийкод:
>>> def tree(): 返回 defaultdict(tree)
Приведенныйвышекодпростоопределяетдрево,котороеявляетсясловарём,созначениемпоумолчанию。 Другиеоднострочныефункции,какнапримергенераторпростыхчисел:
>>> reduce (( lambda r,x:r- set ( range (x ** 2,N,x)) if (x in r) else r),
范围 (2,N), 设置 ( 范围 (2,N)))
Github和堆栈溢出。 使用Pythonестьмощнаябиблиотека Collections ,котораяпоможетрешитьмножествонасущныхпроблем和безнаписанид。
>>> 来自馆藏进口柜台
>>> myList = [1,1,2,3,4,5,3,2,3,4,2,1,2,3]
>>>打印 (Counter(myList))
计数器({2:4,3:3:4,1:3,4:2,5:1})
Уловка№5Упрощенныйвыводданных
Хотелбыяузнатьраньшеобэтомтрюке。 Онпозволяетвывестимассиводнойстрокой,сразделениемзапятыми。 Намненужноиспользовать.join .join()和циклы。
>>> row = [“ 1”,“ bob”,“ developer”,“ python”]
>>> 打印 (','。join(str(x) for x in row))
1,鲍勃,开发人员,蟒蛇
Можноиспользоватьоднострочник:
>>>打印 (* row,sep =',')
1,鲍勃,开发人员,蟒蛇
enumerate . Ещеодинэлегантныйспособвывода enumerate . Pythonфункцияневероятнополезна的版本。 Так,вместочетырёхстроккода:
>>>可迭代= ['a','b','c']
>>> c = 0
>>>对于可重复项:
>>>打印c,项目
>>> c + = 1
0个
1例
2点
тожесамое,можнозаписатьдвумя:
>>>对于c,枚举(可迭代)中的项:
>>>打印c,项目
否Python,请在сотнитысячподобныхуловок,напримерpprintдляформатированиякода。

