कुशलतापूर्वक संयोजन, काउंटिंग, और इटरेशन

Efficient Python Code लिखना

Logan Thomas

Scientific Software Technical Trainer, Enthought

पोकेमॉन ओवरव्यू

  • ट्रेनर्स (पोकेमॉन इकट्ठा करते हैं)

alt="ऐश केचम; Nintendo वीडियो गेम पोकेमॉन में कई किरदारों (ट्रेनर्स) में से एक"

Efficient Python Code लिखना

पोकेमॉन ओवरव्यू

  • पोकेमॉन (काल्पनिक प्राणी चरित्र)

alt="स्क्वर्टल, पिकाचू, बुल्बासौर, और चार्मैंडर; Nintendo वीडियो गेम में मौजूद कई पोकेमॉन में से कुछ"

Efficient Python Code लिखना

पोकेमॉन ओवरव्यू

  • पोकेडेक्स (कैप्चर किए पोकेमॉन स्टोर करता है)

alt="पोकेडेक्स, एक टूल जिसे ट्रेनर्स कैप्चर किए पोकेमॉन स्टोर करने के लिए उपयोग करते हैं"

Efficient Python Code लिखना

पोकेमॉन विवरण

alt="स्क्वर्टल नाम का पोकेमॉन और उससे जुड़ी मेटाडेटा जानकारी"

Efficient Python Code लिखना

पोकेमॉन विवरण

alt="स्क्वर्टल नाम का पोकेमॉन, मेटाडेटा सहित, जिसमें Name और Generation फील्ड हाइलाइट हैं"

Efficient Python Code लिखना

पोकेमॉन विवरण

alt="स्क्वर्टल नाम का पोकेमॉन, मेटाडेटा सहित, जिसमें Type और Legendary फील्ड हाइलाइट हैं"

Efficient Python Code लिखना

पोकेमॉन विवरण

alt="स्क्वर्टल नाम का पोकेमॉन, मेटाडेटा सहित, जिसमें Health Points, Attack, Defense, Special Attack, Special Defense, Speed, और Total फील्ड हाइलाइट हैं"

Efficient Python Code लिखना

ऑब्जेक्ट्स को संयोजित करना

names = ['Bulbasaur', 'Charmander', 'Squirtle']
hps = [45, 39, 44]
combined = []

for i,pokemon in enumerate(names):
    combined.append((pokemon, hps[i]))

print(combined)
[('Bulbasaur', 45), ('Charmander', 39), ('Squirtle', 44)]
Efficient Python Code लिखना

zip के साथ ऑब्जेक्ट्स संयोजित करना

names = ['Bulbasaur', 'Charmander', 'Squirtle']
hps = [45, 39, 44]
combined_zip = zip(names, hps)

print(type(combined_zip))
<class 'zip'>
combined_zip_list = [*combined_zip]

print(combined_zip_list)
[('Bulbasaur', 45), ('Charmander', 39), ('Squirtle', 44)]
Efficient Python Code लिखना

collections मॉड्यूल

  • Python की Standard Library का हिस्सा (बिल्ट-इन मॉड्यूल)
  • विशेषीकृत कंटेनर डेटा टाइप्स
    • जनरल-पर्पज़ dict, list, set, और tuple के विकल्प
  • प्रमुख:
    • namedtuple: named fields वाले tuple सबक्लासेज
    • deque: तेज़ append और pop वाला list-जैसा कंटेनर
    • Counter: hashable ऑब्जेक्ट्स को काउंट करने वाला dict
    • OrderedDict: एंट्रीज़ का क्रम बनाए रखने वाला dict
    • defaultdict: missing वैल्यूज़ के लिए फैक्ट्री फंक्शन कॉल करने वाला dict
Efficient Python Code लिखना

collections मॉड्यूल

  • Python की Standard Library का हिस्सा (बिल्ट-इन मॉड्यूल)
  • विशेषीकृत कंटेनर डेटा टाइप्स
    • जनरल-पर्पज़ dict, list, set, और tuple के विकल्प
  • प्रमुख:
    • namedtuple: named fields वाले tuple सबक्लासेज
    • deque: तेज़ append और pop वाला list-जैसा कंटेनर
    • Counter: hashable ऑब्जेक्ट्स को काउंट करने वाला dict
    • OrderedDict: एंट्रीज़ का क्रम बनाए रखने वाला dict
    • defaultdict: missing वैल्यूज़ के लिए फैक्ट्री फंक्शन कॉल करने वाला dict
Efficient Python Code लिखना

लूप से काउंट करना

# Each Pokémon's type (720 total)
poke_types = ['Grass', 'Dark', 'Fire', 'Fire', ...]

type_counts = {}
for poke_type in poke_types: if poke_type not in type_counts: type_counts[poke_type] = 1 else: type_counts[poke_type] += 1
print(type_counts)
{'Rock': 41, 'Dragon': 25, 'Ghost': 20, 'Ice': 23, 'Poison': 28, 'Grass': 64,
 'Flying': 2, 'Electric': 40, 'Fairy': 17, 'Steel': 21, 'Psychic': 46, 'Bug': 65,
 'Dark': 28, 'Fighting': 25, 'Ground': 30, 'Fire': 48,'Normal': 92, 'Water': 105}
Efficient Python Code लिखना

collections.Counter()

# Each Pokémon's type (720 total)
poke_types = ['Grass', 'Dark', 'Fire', 'Fire', ...]

from collections import Counter
type_counts = Counter(poke_types)
print(type_counts)
Counter({'Water': 105, 'Normal': 92, 'Bug': 65, 'Grass': 64, 'Fire': 48,
         'Psychic': 46, 'Rock': 41, 'Electric': 40, 'Ground': 30,
         'Poison': 28, 'Dark': 28, 'Dragon': 25, 'Fighting': 25, 'Ice': 23,
         'Steel': 21, 'Ghost': 20, 'Fairy': 17, 'Flying': 2})
Efficient Python Code लिखना

itertools मॉड्यूल

  • Python की Standard Library का हिस्सा (बिल्ट-इन मॉड्यूल)
  • इटेरेटर्स बनाने और उपयोग के लिए फंक्शनल टूल्स
  • प्रमुख:
    • अनंत इटेरेटर्स: count, cycle, repeat
    • सीमित इटेरेटर्स: accumulate, chain, zip_longest, आदि
    • कॉम्बिनेशन जेनरेटर: product, permutations, combinations
Efficient Python Code लिखना

itertools मॉड्यूल

  • Python की Standard Library का हिस्सा (बिल्ट-इन मॉड्यूल)
  • इटेरेटर्स बनाने और उपयोग के लिए फंक्शनल टूल्स
  • प्रमुख:
    • अनंत इटेरेटर्स: count, cycle, repeat
    • सीमित इटेरेटर्स: accumulate, chain, zip_longest, आदि
    • कॉम्बिनेशन जेनरेटर: product, permutations, combinations
Efficient Python Code लिखना

लूप के साथ कॉम्बिनेशंस

poke_types = ['Bug', 'Fire', 'Ghost', 'Grass', 'Water']

combos = [] for x in poke_types: for y in poke_types: if x == y: continue if ((x,y) not in combos) & ((y,x) not in combos): combos.append((x,y))
print(combos)
[('Bug', 'Fire'), ('Bug', 'Ghost'), ('Bug', 'Grass'), ('Bug', 'Water'),
 ('Fire', 'Ghost'), ('Fire', 'Grass'), ('Fire', 'Water'),
 ('Ghost', 'Grass'), ('Ghost', 'Water'), ('Grass', 'Water')]
Efficient Python Code लिखना

itertools.combinations()

poke_types = ['Bug', 'Fire', 'Ghost', 'Grass', 'Water']

from itertools import combinations
combos_obj = combinations(poke_types, 2)
print(type(combos_obj))
<class 'itertools.combinations'>
combos = [*combos_obj]
print(combos)
[('Bug', 'Fire'), ('Bug', 'Ghost'), ('Bug', 'Grass'), ('Bug', 'Water'),
 ('Fire', 'Ghost'), ('Fire', 'Grass'), ('Fire', 'Water'),
 ('Ghost', 'Grass'), ('Ghost', 'Water'), ('Grass', 'Water')]
Efficient Python Code लिखना

अभ्यास करते हैं!

Efficient Python Code लिखना

Preparing Video For Download...