A lista és szótár értelmezése nagyszerű módja a kód hosszának lerövidítésére és olvashatóságának növelésére.
Mi az a lista / diktatúra megértése
A List/Dict Comprehension egy módja annak, hogy a hurkolt effektust kevesebb kóddal emulálja a nyelvén. Mindegyik megfelelő listával vagy diktálással végigpörgethet egy meglévő tömböt vagy szótárt, és új tömböt vagy diktátumot hozhat létre, miközben módosítja a meglévő elemeket. Ha listával és diktatúrával írja meg a kódot, az csökkenti a kódot és javítja az olvashatóságot.
Szintaxislista értelmezése
new_list = [new_item for item in list] array = [1,2,3,4,5] * new_array = [i + 1 for i in array] * // new_array = [2,3,4,5,6]
Ebben a példában végighurkoljuk a tömb nevű tömböt, és minden elemhez hozzáadunk egyet. Ezt követően az új elemeket beillesztjük egy új tömbbe, melynek neve new_array. Mindezt egyetlen kódsor alatt megtehetjük!
vs.
A másik módja annak, hogy egy tömbön keresztül hurkoljon, és újat hozzon létre:
new_array = [] for i in array: i+= 1 new_array.append(i) // new_array = [2,3,4,5,6]
Amint láthatja, a listaértés használata jelentősen csökkenti a kód hosszát, valamint könnyen olvashatóvá és tisztábbá teszi. Sokkal kevesebb kóddal érheti el ugyanazt az eredményt.
Szintaxis szótár megértése
Ugyanezt megteheti a szótárak esetében is. A diktatúra megértésében is nagy az erő és a rugalmasság.
new_dict = {new_key: new_value for item in list} names = ["Alex", "John", "Ashley"] student_scores = {name: random.randint(0,100) for name in names} // student_scores = { "Alex": 54, "John": 78, "Ashley": 33, }
Ebben a példában a tömbneveket veszem, és létrehozok egy új diktátumot, amely minden tanuló nevét és egy véletlenszerű egész számot tartalmazza pontszámként. Ismét megtehetjük mindezt egyetlen kódsorban!
További példák
Egy másik módszer, amellyel kiegészíthetjük a listát és a szövegértést, a feltételes feltételek hozzáadása. A feltételes feltételek lehetővé teszik számunkra, hogy kiválasszunk bizonyos elemeket, amelyek követik a feltételt, és az új tömbünkbe vagy új diktátumunkba kerül.
Feltételes lista értése
names = ["Alex", "Beth", "Caroline", "Dave", "Jacoby", "Fred"] short_names = [name for name in names if len(name) < 5] // short_names = ["Alex", "Beth" , "Dave", "Fred"]
Ebben a példában csak az 5-nél rövidebb neveket adjuk hozzá az új, rövid neveknek nevezett tömbünkhöz. Az if len(name) ‹ 5 feltételes utasítást használjuk annak kiválasztására, hogy mely neveket szeretnénk az új tömbünkbe.
Feltételes diktált szövegértés
new_dict = {new_key: new_value for (key, value) in dict.items() if test_passes} student_scores = {‘Josh': 51, 'Alex': 54, 'Faith': 30, 'Ashley': 98, 'Marie': 68, 'Chris': 38} passed_students = {name: score for (name, score) in student_scores.items() if score > 40} // passed_students = {‘Josh’: 51, ‘Alex’, 54, ‘Ashley’: 98, ‘Marie’: 68}
Ebben a példában új diktátumot hozok létre egy meglévő, diák_pontszámok nevű diktátumból. Az új, passed_students elnevezésű diktátumban az összes diákot és a hozzájuk tartozó pontszámokat besorolom, ha 40-nél magasabb pontszámot értek el. Azért használom a student_scores.items()-t, mert végignézek rajta. és a meglévő diktátum, és nem egy lista, mint a fenti előző példa.