蟒蛇。 Пятьуловок,которыенужнознать,ужесегодня。

主题: Enoch Kan 您今天需要了解的五个Python技巧

БудьвыстаршиминженеромAIилистудентомпервогокурсабиологии— pythonраноилипоздновыстон Послерелиза,大约1991年,Python的быстросталлюбимымязыкомпрограммистовитехнологов。 Согласнорейтингу堆栈溢出,основанномунапроявленииинтересакязыкам,вразвитыхстранах,pythonбыстронабира。

НевероятныйвзлётPython — David Robinson

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的Манипулировать,чрезвычайнопросто。 Например,вамнужновывестипредложение,используяпредопределённыепеременные: str1str2lst3

  >>> 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- setrange (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дляформатированиякода。