Pythonリスト内包表記の概要

Pythonリスト内包表記は、リストの各要素と対話するための簡潔な方法を提供します。 彼らがしたとしても Python2.0以降で利用可能、それらの構文は、多くの場合、人々がそれらを使用することをやめさせます。 この記事は、リスト内包表記をわかりやすく紹介し、スクリプトツールボックスに追加するPython機能をもうXNUMXつ提供することを目的としています。

リスト内包表記とは

Python 3.7のドキュメントによると、 内包表記: […]リストを作成するための簡潔な方法を提供します。 一般的なアプリケーションは、各要素が別のシーケンスまたは反復可能な各メンバーに適用された操作の結果である新しいリストを作成するか、特定の条件を満たす要素のサブシーケンスを作成することです。

簡単なリスト内包表記の例

公式のリスト内包表記の定義とその例は、すぐには明確にならない場合があります。 別の例を使用してみましょう。 0から5までの数があり、各数に2を掛けたいとしましょう。これは、0、1、2、3、4、5の数が被乗数で、2が乗数であることを意味します。 乗算演算は0 * 2、1 * 2、2 * 2、3 * 2、4 * 2、および5 * 2でなければならないことがわかっています。 乗算演算の積は、0、2、4、6、8、および10である必要があります。

Pythonでは、リスト内包表記を使用して同じ計算を実行できます。 目的をもう一度説明しましょう。ただし、スクリプトに適した方法で説明します。被乗数0〜5の個々の被乗数(または数値)ごとに、2を掛けます。Pythonのコードと結果は次のとおりです。

>>>被乗数= [0、1、2、3、4、5] >>>乗数= 2 >>>製品= [数*被乗数の数の乗数] >>>製品[0、2、4、6 、8、10]

コードの最初の行は、被乗数のリスト0〜5を定義しました。 コードの2行目は、乗数XNUMXを定義しました。コードのXNUMX行目は、乗算を実行するPythonリスト内包表記を定義しました。 コードの最後の行は、単に製品の値を返しました。

より複雑なリスト内包表記の例

興奮して犬の品種のリスト全体をウィキペディアのページからスプレッドシートにコピーし、セルの数式を使用して同等のPythonリストの構文を生成した可能性があります。 さらに、データセットに関するいくつかの重要な注意事項:

  • アポストロフィのような特殊文字があります。 したがって、何をしているのかわからない場合は、二重引用符を一重引用符/アポストロフィに変更しないでください。
  • ASCIIで表現できない国際文字があります。 この例では、すぐにこれを再検討します。

ソースコード:

#作成者:Jeoffri Davis#目的:#-Pythonリスト内包表記の使用例#テスト済み:#-Python 3.7#-MacOS Mojave#入力:#-すべての入力は自己完結型#出力:#-ヒーラー用のXNUMXつの異なるリスト# -国際的な文字を含む品種名のXNUMXつのリスト#犬の品種の膨大なリストを定義します。  PEP 8コーディングスタイルで#doggoloveを封じ込めようとしない。
 dogs = ["Affenpinscher","Afghan Hound","Afghan Shepherd","Aidi","Airedale Terrier","Akbash","Akita","Alano Español","Alaskan husky","Alaskan Klee Kai","Alaskan Malamute","Alaunt","Alopekis","Alpine Dachsbracke","Alpine Mastiff","Alpine Spaniel","American Akita","American Bully","American Bulldog","American Cocker Spaniel","American English Coonhound","American Eskimo Dog","American Foxhound","American Hairless Terrier","American Pit Bull Terrier","American Staffordshire Terrier","American Water Spaniel","Anatolian Shepherd Dog","Andalusian Hound","Anglo-Français de Petite Vénerie","Appenzeller Sennenhund","Argentine Polar Dog","Ariegeois","Armant","Armenian Gampr dog","Artois Hound","Australian Cattle Dog","Australian Kelpie","Australian Shepherd","Australian Stumpy Tail Cattle Dog[10]","Australian Terrier","Austrian Black and Tan Hound","Austrian Pinscher","Azawakh","Bakharwal dog","Barbado da Terceira","Barbet","Basenji","Basque Shepherd Dog","Basset Artésien Normand","Basset Bleu de Gascogne","Basset Fauve de Bretagne","Basset Hound","Bavarian Mountain Hound","Beagle","Beagle-Harrier","Bearded Collie","Beauceron","Bedlington Terrier","Belgian Shepherd Dog (Groenendael)","Belgian Shepherd Dog (Laekenois)","Belgian Shepherd Dog (Malinois)","Belgian Shepherd Dog (Tervuren)","Bergamasco Shepherd","Berger Blanc Suisse","Berger Picard","Bernese Mountain Dog","Bichon Frisé","Billy","Black and Tan Coonhound","Black and Tan Virginia Foxhound","Black Norwegian Elkhound","Black Russian Terrier","Black Mouth Cur","Bloodhound","Blue Heeler","Blue Lacy","Blue Paul Terrier","Blue Picardy Spaniel","Bluetick Coonhound","Boerboel","Bohemian Shepherd","Bolognese","Border Collie","Border Terrier","Borzoi","Bosnian Coarse-haired Hound","Boston Terrier","Bouvier des Ardennes","Bouvier des Flandres","Boxer","Boykin Spaniel","Bracco Italiano","Braque d'Auvergne","Braque de l'Ariege","Braque du Bourbonnais","Braque du Puy","Braque Francais","Braque Saint-Germain","Brazilian Dogo","Brazilian Terrier","Briard","Briquet Griffon Vendéen","Brittany","Broholmer","Bruno Jura Hound","Brussels Griffon","Bucovina Shepherd Dog","Bull and Terrier","Bull Terrier","Bulldog","Bullenbeisser","Bullmastiff","Bully Kutta","Burgos Pointer","Cairn Terrier","Canaan Dog","Canadian Eskimo Dog","Cane Corso","Cantabrian Water Dog","Cão da Serra de Aires","Cão de Castro Laboreiro","Cão de Gado Transmontano","Cão Fila de São Miguel","Carolina Dog","Carpathian Shepherd Dog","Catalan Sheepdog","Caucasian Shepherd Dog","Cavalier King Charles Spaniel","Central Asian Shepherd Dog","Cesky Fousek","Cesky Terrier","Chesapeake Bay Retriever","Chien Français Blanc et Noir","Chien Français Blanc et Orange","Chien Français Tricolore","Chien-gris","Chihuahua","Chilean Terrier","Chinese Chongqing Dog","Chinese Crested Dog","Chinese Imperial Dog","Chinook","Chippiparai","Chiribaya Dog","Chow Chow","Cierny Sery","Cirneco dell'Etna","Clumber Spaniel","Collie, Rough","Collie, Smooth","Combai","Cordoba Fighting Dog","Coton de Tulear","Cretan Hound","Croatian Sheepdog","Cumberland Sheepdog","Curly-Coated Retriever","Cursinu","Czechoslovakian Wolfdog","Dachshund","Dalbo dog","Dalmatian","Dandie Dinmont Terrier","Danish-Swedish Farmdog","Deutsche Bracke","Doberman Pinscher","Dogo Argentino","Dogo Cubano","Dogue de Bordeaux","Drentse Patrijshond","Drever","Dunker","Dutch Shepherd","Dutch Smoushond","East Siberian Laika","East European Shepherd","Elo","English Cocker Spaniel","English Foxhound","English Mastiff","English Pointer","English Setter","English Shepherd","English Springer Spaniel","English Toy Terrier (Black & Tan)","English Water Spaniel","English White Terrier","Entlebucher Mountain Dog","Estonian Hound","Estrela Mountain Dog","Eurasier","Eurohound","Field Spaniel","Fila Brasileiro","Finnish Hound","Finnish Lapphund","Finnish Spitz","Flat-Coated Retriever","Fox Terrier, Smooth","Fox Terrier, Wire","French Brittany","French Bulldog","French Spaniel","Gaddi Kutta","Galgo Español","Galician Shepherd Dog","Garafian Shepherd","Gascon Saintongeois","Georgian Shepherd","German Longhaired Pointer","German Pinscher","German Roughhaired Pointer","German Shepherd Dog","German Shorthaired Pointer","German Spaniel","German Spitz","German Wirehaired Pointer","Giant Schnauzer","Glen of Imaal Terrier","Golden Retriever","Gordon Setter","Gran Mastín de Borínquen","Grand Anglo-Français Blanc et Noir","Grand Anglo-Français Blanc et Orange","Grand Anglo-Français Tricolore","Grand Basset Griffon Vendéen","Grand Bleu de Gascogne","Grand Griffon Vendéen","Great Dane","Great Pyrenees","Greater Swiss Mountain Dog","Greek Harehound","Greek Shepherd","Greenland Dog","Greyhound","Griffon Bleu de Gascogne","Griffon Fauve de Bretagne","Griffon Nivernais","Guatemalan Dogo","Gull Terrier","Hamiltonstövare","Hanover Hound","Hare Indian Dog","Harrier","Havanese","Hawaiian Poi Dog","Himalayan Sheepdog","Hokkaido","Hortaya borzaya","Hovawart","Huntaway","Hygen Hound","Ibizan Hound","Icelandic Sheepdog","Indian pariah dog","Indian Spitz","Irish Red and White Setter","Irish Setter","Irish Terrier","Irish Water Spaniel","Irish Wolfhound","Istrian Coarse-haired Hound","Istrian Short-haired Hound","Italian Greyhound","Jack Russell Terrier","Jagdterrier","Swedish Elkhound","Japanese Chin","Japanese Spitz","Japanese Terrier","Jindo","Jonangi","Kaikadi dog","Kai Ken","Kangal Shepherd Dog","Kanni","Karakachan dog","Karelian Bear Dog","Karst Shepherd","Keeshond","Kerry Beagle","Kerry Blue Terrier","King Charles Spaniel","King Shepherd","Kintamani","Kishu Ken","Komondor","Koolie","Koyun dog","Kromfohrländer","Kumaon Mastiff","Kunming Wolfdog","Kurī","Kuvasz","Kyi-Leo","Labrador Husky","Labrador Retriever","Lagotto Romagnolo","Lakeland Terrier","Lancashire Heeler","Landseer","Lapponian Herder","Lapponian Shepherd","Large Münsterländer","Leonberger","Lhasa Apso","Lithuanian Hound","Louisiana Catahoula Leopard Dog","Löwchen","Mackenzie River husky","Magyar agár","Mahratta Greyhound","Ratonero Mallorquin","Maltese","Manchester Terrier","Maremma Sheepdog","Marquesan Dog","McNab dog","Miniature American Shepherd","Miniature Bull Terrier","Miniature Fox Terrier","Miniature Pinscher","Miniature Schnauzer","Miniature Shar Pei","Molossus","Molossus of Epirus","Montenegrin Mountain Hound","Moscow Watchdog","Moscow Water Dog","Mountain Cur","Mucuchies","Mudhol Hound","Mudi","Neapolitan Mastiff","Nederlandse Kooikerhondje","Nenets Herding Laika","Newfoundland","New Guinea singing dog","New Zealand Heading Dog","Norfolk Spaniel","Norfolk Terrier","Norrbottenspets","North Country Beagle","Northern Inuit Dog","Norwegian Buhund","Norwegian Elkhound","Norwegian Lundehund","Norwich Terrier","Nova Scotia Duck Tolling Retriever","Old Croatian Sighthound","Old Danish Pointer","Old English Bulldog","Old English Sheepdog","Old English Terrier","Old German Shepherd Dog","Old Spanish Pointer","Old Time Farm Shepherd","Olde English Bulldogge","Otterhound","Pachon Navarro","Pandikona","Paisley Terrier","Papillon","Parson Russell Terrier","Pastore della Lessinia e del Lagorai","Patterdale Terrier","Pekingese","Perro de Pastor Mallorquin","Perro de Presa Canario","Perro de Presa Mallorquin","Peruvian Inca Orchid","Petit Basset Griffon Vendéen","Petit Bleu de Gascogne","Phalène","Pharaoh Hound","Phu Quoc Ridgeback","Picardy Spaniel","Plummer Terrier","Plott Hound","Podenco Canario","Poitevin","Polish Greyhound","Polish Hound","Polish Hunting Dog","Polish Lowland Sheepdog","Polish Tatra Sheepdog","Pomeranian","Pont-Audemer Spaniel","Poodle","Porcelaine","Portuguese Podengo","Portuguese Pointer","Portuguese Water Dog","Posavac Hound","Potsdam Greyhound","Pražský Krysařík","Pudelpointer","Pug","Puli","Pumi","Pungsan dog","Pyrenean Mastiff","Pyrenean Shepherd","Rafeiro do Alentejo","Rajapalayam","Rampur Greyhound","Rastreador Brasileiro","Rat Terrier","Ratonero Bodeguero Andaluz","Ratonero Murciano de Huerta","Ratonero Valenciano","Redbone Coonhound","Rhodesian Ridgeback","Romanian Mioritic Shepherd Dog","Romanian Raven Shepherd Dog","Rottweiler","Russian Salon Dog","Russian Spaniel","Russian Toy","Russian Tracker","Russo-European Laika"
,"Russell Terrier","Saarloos Wolfdog","Sabueso Español","Sabueso fino Colombiano","Saint Bernard","Saint John's water dog","Saint-Usuge Spaniel","Sakhalin Husky","Salish Wool Dog","Saluki","Samoyed","Sapsali","Šarplaninac","Schapendoes","Schillerstövare","Schipperke","Schweizer Laufhund","Schweizerischer Niederlaufhund","Scotch Collie","Scottish Deerhound","Scottish Terrier","Sealyham Terrier","Segugio Italiano","Segugio Maremmano","Seppala Siberian Sleddog","Serbian Hound","Serbian Tricolour Hound","Seskar Seal Dog","Shar Pei","Shetland Sheepdog","Shiba Inu","Shih Tzu","Shikoku","Shiloh Shepherd","Siberian Husky","Silken Windhound","Silky Terrier","Sinhala Hound","Skye Terrier","Sloughi","Slovakian Wirehaired Pointer","Slovensky Cuvac","Slovensky Kopov","Smålandsstövare","Small Münsterländer","Small Greek Domestic Dog","Soft-Coated Wheaten Terrier","South Russian Ovcharka","Southern Hound","Spanish Mastiff","Spanish Water Dog","Spinone Italiano","Sporting Lucas Terrier","Stabyhoun","Staffordshire Bull Terrier","Standard Schnauzer","Stephens Cur","Styrian Coarse-haired Hound","Sussex Spaniel","Swedish Lapphund","Swedish Vallhund","Tahitian Dog","Tahltan Bear Dog","Taigan","Taiwan Dog","Talbot Hound","Tamaskan Dog","Teddy Roosevelt Terrier","Telomian","Tenterfield Terrier","Terceira Mastiff","Thai Bangkaew Dog","Thai Ridgeback","Tibetan Mastiff","Tibetan Spaniel","Tibetan Terrier","Tornjak","Tosa","Toy Bulldog","Toy Fox Terrier","Toy Manchester Terrier","Toy Trawler Spaniel","Transylvanian Hound","Treeing Cur","Treeing Tennessee Brindle","Treeing Walker Coonhound","Trigg Hound","Tweed Water Spaniel","Tyrolean Hound","Cimarrón Uruguayo","Vanjari Hound","Villano de Las Encartaciones","Villanuco de Las Encartaciones","Vizsla","Volpino Italiano","Weimaraner","Welsh Corgi, Cardigan","Welsh Corgi, Pembroke","Welsh Sheepdog","Welsh Springer Spaniel","Welsh Terrier","West Highland White Terrier","West Siberian Laika","Westphalian Dachsbracke","Wetterhoun","Whippet","White Shepherd","Wirehaired Pointing Griffon","Wirehaired Vizsla","Xiasi Dog","Xoloitzcuintli","Yakutian Laika","Yorkshire Terrier"]
def isHeeler(breed: str):
   """This function lets us define more robust logic for
   determining whether a dog is a Heeler breed.  これは、犬の品種に複数のニックネームがある場合に便利です。
 "" "if'Heeler 'inbreedまたはbreed ==' Australian Cattle Dog ':return True else:return False def isAscii(breed:str):" ""この関数は、品種名をASCIIでエンコードできるかどうかをチェックします。は、アメリカ英語に見られるすべての標準英数字をサポートする文字セットです。
 品種名をASCIIでエンコードできない場合は、品種名に国際文字が含まれていることを示す良い指標です。  私たちは犬がよく旅行するのが好きですが、ASCIIエンコーディングを期待する他のシステムやソリューションと統合するためにスクリプトを拡張すると、エンコーディングの問題が発生します。
 "" "result = True try:breed.encode( 'ascii')ただし、UnicodeEncodeError as catched_exception:result = False return result#変数" dogs "に含まれるリストを検索するリスト内包表記# 'Heeler 'その中に、一致する品種を# "heelers1"という新しいリストに保存します。heelers1= [dog in dogの場合' Heeler 'in dog]#条件付きロジックにisHeeler関数を使用するリスト内包表記#。  関数を使用すると、リスト内包表記が簡潔になります。
 heelers2 = [isHeeler(dog)の場合は犬の犬用の犬]#名前に国際文字が含まれる#すべての犬種を検索するリスト内包表記。  #スクリプトでは、エンコーディングの問題につながる可能性があるため、#国際文字に注意することをお勧めします。
 #通常はASCIIエンコードを強制しませんが、#その文字セットはよく知られているため、エンコードの概念を理解するのに役立ちます。

出力

「ヒーラー」という単語を含む品種名:[「ブルーヒーラー」、「ランカシャーヒーラー」]ヒーラー品種のより堅牢なリスト:[「オーストラリアの牛犬」、「ブルーヒーラー」、「ランカシャーヒーラー」]国際的な文字を含む品種名: ['AlanoEspañol'、 'Anglo-FrançaisdePetiteVénerie'、 'BassetArtésienNormand'、 'BichonFrisé'、 'BriquetGriffonVendéen'、 'C​​ãodaSerradeAires'、 'C​​ãodeCastroLaboreiro'、 'C​​ãode Gado Transmontano '、'CãoFiladeSãoMiguel '、'ChienFrançaisBlancetNoir '、'ChienFrançaisBlancetOrange '、'ChienFrançaisTricolore '、'GalgoEspañol '、'GranMastíndeBorínquen '、' Grand Anglo- FrançaisBlancetNoir '、'GrandAnglo-FrançaisBlancetOrange '、'GrandAnglo-FrançaisTricolore '、' GrandBassetGriffonVendéen '、'GrandGriffonVendéen '、'Hamiltonstövare '、'Kromfohrländer '、'Kurī ' LargeMünsterländer '、'Löwchen '、'Magyaragár '、' PetitBassetGriffonVendéen '、'Phalène '、'PražskýKrysařík '、'SabuesoEspañol '、'Šarplaninac '、'Schillerstövare '、'Schillerstövare '、' sterländer '、'CimarrónUruguayo ']

リスト内包表記をLogicMonitorに適用する方法

プログラムでLMポータルを管理するときに、リスト内包表記を使用することがよくあります。 LM レスト API。 XNUMXつの例は次のとおりです。

  1. RESTAPIとデータ処理効率を最大化します。 フィルタクエリパラメータを使用して複数のAPI呼び出しを送信するのではなく、XNUMXつのREST API呼び出しを使用してすべてのデバイスグループをプルし、Pythonリスト内包表記を使用して結果をデータのサブセットにフィルタリングできます。 同等のサブセットをRESTAPIから直接取得するには、複数のAPI呼び出しが必要になります。これは、ローカルメモリにアクセスするよりも時間がかかり、APIの使用が制限されるリスクがあります。
  2. LogicMonitorポータルでデバイスグループまたはダッシュボードを構築するために使用される健全性チェックCSVファイル。 顧客、特にMSPをオンボードで支援する必要があるプロフェッショナルサービスの契約では、CSVで目的のデバイスとダッシュボードグループの構造を定義してもらうことがよくあります。 次に、LM RESTAPIを使用してポータルを構築できます。 いくつかの制限された特殊文字と文字数の制限があります。 これらは両方とも、最終的に失敗するREST API呼び出しを行う前に、リスト内包表記を使用してPythonスクリプトの早い段階で確認できます。

まとめ

Pythonリスト内包表記は、簡潔でありながら強力なリスト操作を提供できます。 リスト内の各要素に対して操作を実行でき、操作をいつ実行するかに関する条件を含めることもできます。 私は通常、リスト内包表記を使用して、LogicMonitor REST APIから返されたデータをキャッシュし、サブセットに分割します。 また、CSVファイルを他の操作に使用する前に健全性チェックを行う必要がある場合は、リスト内包表記にアクセスします。

LogicMonitorは、おそらく毎日使用するグローバルビジネスサービスの監視を強化します。 そのレベルでの運用には柔軟性が必要です。 これが、LogicMonitorデータソースがサポートする理由です。 Python , Groovy, PowerShellの コレクターホスト環境で構成する限り、その他の言語。