Ako násobiť zoznamy v Pythone: 7 rýchlych spôsobov

Násobenie zoznamov v Pythone je bežnou operáciou pri vykonávaní matematických výpočtov alebo riešení problémov pri manipulácii s údajmi. Existuje niekoľko spôsobov, ako dosiahnuť túto úlohu, v závislosti od vašich požiadaviek a knižníc, ktoré máte k dispozícii.

Na znásobenie zoznamov v Pythone môžete použiť funkcie pre cykly, porozumenie zoznamu, zips a mapové funkcie alebo vstavaný modul functools. Môžete tiež použiť funkcie z externej knižnice Pythonu, ako je NumPy.

Tento článok vám ukáže mnoho rôznych spôsobov znásobenia zoznamov, každý s príkladom kódu a vysvetlenými výsledkami.

Začnime!

Obsah

2 Typy násobenia číselných zoznamov v Pythone

Skôr než sa ponoríme do konkrétnych metód, mali by ste pochopiť, aký typ násobenia zoznamov dosahujú.

Python má niekoľko rôznych konceptov, ktoré spadajú pod široký pojem násobenie zoznamov. To zahŕňa replikáciu zoznamov alebo dosiahnutie karteziánskeho súčinu prvkov v zozname.

Tento článok sa namiesto toho zameriava na dva typy aritmetického násobenia prvkov v zozname:

  1. Násobenie hodnotou

  2. Násobenie podľa prvkov

Poďme sa rýchlo pozrieť na tieto dva pojmy.

1. Násobenie hodnotou

Keď máte zoznam celých čísel, možno budete chcieť vynásobiť každý prvok konkrétnou hodnotou. Napríklad máte zoznam [1, 2, 3] a chcete vynásobiť každý prvok hodnotou 3.

Môžete skúsiť (nesprávne) použiť operátor násobenia ako v tomto kúsku kódu:

list1 = [1, 2, 3]
result = list1 * 3

Možno vás prekvapí, že výsledok je [1, 2, 3, 1, 2, 3, 1, 2, 3]. Toto je známe ako replikácia zoznamu .

2. Násobenie zoznamu prvkov

Predpokladajme, že máte dva zoznamy: [1, 2, 3] a [4, 5, 6]

Chcete vynásobiť prvky v rovnakom indexe v zozname, aby ste získali [4, 10, 18] ako výsledok.

Ak sa pokúsite vynásobiť dva pomocou operátora „*“, zobrazí sa chyba:

TypeError: nie je možné vynásobiť sekvenciu non-int typu 'list'

Je to preto, že operátor násobenia nie je navrhnutý tak, aby pracoval so zoznamami tak, ako to robí s celými číslami alebo s pohyblivou čiarou. Namiesto toho násobenie zoznamov vyžaduje operáciu známu ako násobenie po prvkoch.

Násobenie po prvkoch páruje zodpovedajúce prvky z dvoch zoznamov a násobí ich dohromady, čím sa vytvorí nový zoznam.

Teraz, keď ste pochopili tieto dva pojmy. pokúsme sa prejsť celým radom techník, aby sme dosiahli správne výsledky.

Ako používať slučku For na viacnásobný zoznam prvkov v Pythone

Ako násobiť zoznamy v Pythone: 7 rýchlych spôsobov

Predpokladajme, že chcete vynásobiť prvky hodnotou. Pre tento prístup môžete iterovať cez prvky s a a vynásobiť každý z nich druhou hodnotou.

Tu je príklad s jedným zoznamom. Premenná result obsahuje zoznam výstupov.

list1 = [1, 2, 3, 4]
factor = 3
result = []

for element in list1:
    result.append(element * factor)

V tomto prípade bude zoznam výsledkov [3, 6, 9, 12].

Ako používať porozumenia zoznamu na násobenie

Porozumenie zoznamu poskytuje stručný spôsob, ako vykonať číselný typ násobenia zoznamu. Získate rovnaký výsledok ako pri použití cyklu for , ale s kompaktnejšou syntaxou.

Tu je predchádzajúci príklad s porozumením zoznamu:

list1 = [1, 2, 3, 4]
factor = 3
result = [element * factor for element in list1]

Výsledkom tohto kódu je rovnaký výstup ako predtým: [3, 6, 9, 12].

Ako používať funkciu Zip na násobenie prvkov

Ako násobiť zoznamy v Pythone: 7 rýchlych spôsobov

Ak máte dva zoznamy celých čísel, možno budete chcieť zoznamy vynásobiť po prvkoch. To znamená, že vynásobíte prvý prvok v prvom zozname krát prvý prvok v druhom zozname a tak ďalej s prvkami na rovnakej pozícii.

Funkcia zip() to môže dosiahnuť, keď ju skombinujete s porozumením zoznamu.

Funkcia kombinuje prvky dvoch vstupných zoznamov, čo vám umožňuje paralelne prechádzať cez ne. Tu je príklad použitia zoznamov rovnakej veľkosti:

list1 = [1, 2, 3, 4]
list2 = [2, 3, 4, 5]
result = [a * b for a, b in zip(list1, list2)]

V tomto prípade bude výsledná premenná obsahovať výsledný zoznam: [4, 10, 18].

Práca s n-ticemi a konštruktérmi

Niekedy možno budete musieť pracovať so zoznamami obsahujúcimi n-tice namiesto jednoduchých celých čísel.

Ak chcete znásobiť dva zoznamy n-tic , môžete použiť kombináciu:

  • funkcia zip().

  • tuple konštruktérov

  • zoznam porozumení

Tu je príklad:

list1 = [(1, 2), (3, 4)]
list2 = [(5, 6), (7, 8)]

result = [tuple(a * b for a, b in zip(t1, t2)) for t1, t2 in zip(list1, list2)]

Toto je výsledok: [(5, 12), (21, 32)].

Ako používať funkciu mapy a lambda v Pythone

Ako násobiť zoznamy v Pythone: 7 rýchlych spôsobov

Funkcia mapy v Pythone je pohodlný spôsob, ako použiť funkciu na každú položku v iterovateľnej forme, napríklad v zozname.

Funkcia lambda v Pythone je malá anonymná funkcia. To znamená, že ide o funkciu bez názvu.

Ak chcete znásobiť dva zoznamy po prvkoch, môžete kombinovať funkcie mapy a lambda:

list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = list(map(lambda x, y: x * y, list1, list2))

Premenná result bude obsahovať násobené zoznamy: [4, 10, 18].

Ako používať modul operátora v Pythone

Operátorský modul poskytuje množstvo užitočných funkcií pre prácu s rôznymi dátovými štruktúrami a typmi.

Funkciu operator.mul () je možné použiť na znásobenie zoznamov celých čísel, keď ju skombinujete s funkciou mapy.

import operator

list1 = [1, 2, 3]
list2 = [4, 5, 6]

result = list(map(operator.mul, list1, list2))

V tomto príklade importujete modul operátora a použijete funkciu mul() spolu so vstavanou funkciou map() Pythonu na znásobenie každého prvku z dvoch zoznamov.

Premenná result bude obsahovať násobené zoznamy: [4, 10, 18].

Knižnica NumPy: Funkcie Array a Multiply

Ako násobiť zoznamy v Pythone: 7 rýchlych spôsobov

Knižnica NumPy je výkonná externá knižnica v Pythone, široko používaná na numerické výpočty a prácu s poliami. Táto knižnica je obzvlášť efektívna pri práci s veľkými poľami alebo viacrozmernými poľami.

Ak chcete použiť NumPy, môžete ho nainštalovať pomocou pip:

pip install numpy

Ak chcete vykonať násobenie po prvkoch v dvoch zoznamoch pomocou NumPy, postupujte podľa týchto všeobecných krokov:

  1. Skonvertujte každý zoznam na pole NumPy pomocou numpy.array() .

  2. Vykonajte násobenie pomocou funkcie násobenia NumPy.

  3. Voliteľne skonvertujte výsledok späť na zoznam Python pomocou metódy tolist().

Tu je príklad kódu:

import numpy as np

list1 = [1, 2, 3]
list2 = [4, 5, 6]
arr1 = np.array(list1)
arr2 = np.array(list2)

res_arr = np.multiply(arr1, arr2)
result = res_arr.tolist()

Tým sa vráti rovnaký výsledok ako v predchádzajúcich príkladoch: [4, 10, 18].

Ako skombinovať Functools a NumPy v Pythone

Knižnica functools obsahuje funkciu redukcie, ktorá aplikuje špecifickú funkciu kumulatívne na položky v zozname, čím sa zoznam zredukuje na jednu hodnotu.

Ak chcete znásobiť dva zoznamy pomocou funkcie Zníženie () , môžete ju skombinovať s funkciou násobenia z knižnice NumPy.

Tu je príklad:

from functools import reduce
import numpy as np

list1 = [1, 2, 3]
list2 = [4, 5, 6]

result = reduce(np.multiply, [list1, list2])

Tento kód importuje potrebné knižnice a používa funkciu reduction() spolu s numpy.multiply() na vykonanie násobenia dvoch zoznamov po prvkoch.

Práca so zoznamami a inými dátovými štruktúrami v Pythone

Väčšina aspektov analýzy údajov si vyžaduje prácu s inými dátovými štruktúrami. Svoje znalosti napríklad využijete pri manipulácii s chýbajúcimi údajmi pomocou interpolácie.

V tomto videu nájdete niektoré pokročilé techniky:

Záverečné myšlienky

Naučili ste sa rôzne metódy aritmetického násobenia zoznamov v Pythone. Niektorí používajú iba vstavané moduly a funkcie, zatiaľ čo iní sa spoliehajú na knižnice tretích strán.

Schopnosť vykonávať elementárne násobenie otvára dvere nespočetnému množstvu aplikácií. Od analýzy údajov až po strojové učenie sú tieto operácie nevyhnutnou súčasťou mnohých algoritmov a výpočtových úloh.

Aj keď sa tento článok zameriaval na násobenie, pojmy, ktoré ste sa naučili, sa vzťahujú aj na iné operácie. Sčítanie, odčítanie a delenie po prvkoch je možné vykonať takmer rovnakým spôsobom.

Pamätajte, že najlepší spôsob, ako tieto koncepty upevniť, je ich aplikovaním – tak pokračujte, spustite prostredie Pythonu a začnite experimentovať. Či už automatizujete úlohy, manipulujete s údajmi alebo vytvárate komplexný softvér, tieto techniky vám nepochybne prídu vhod.

Šťastný Pythoning!


Vytvoření tabulky data v LuckyTemplates

Vytvoření tabulky data v LuckyTemplates

Zjistěte, proč je důležité mít vyhrazenou tabulku s daty v LuckyTemplates, a naučte se nejrychlejší a nejefektivnější způsob, jak toho dosáhnout.

LuckyTemplates Mobile Reporting Tipy a techniky

LuckyTemplates Mobile Reporting Tipy a techniky

Tento stručný návod zdůrazňuje funkci mobilního hlášení LuckyTemplates. Ukážu vám, jak můžete efektivně vytvářet přehledy pro mobily.

Profesionální servisní analytické zprávy v LuckyTemplates

Profesionální servisní analytické zprávy v LuckyTemplates

V této ukázce LuckyTemplates si projdeme sestavy ukazující profesionální analýzy služeb od firmy, která má více smluv a zákaznických vztahů.

Aktualizácie Microsoft Power Platform | Microsoft Ignite 2021

Aktualizácie Microsoft Power Platform | Microsoft Ignite 2021

Pozrite si kľúčové aktualizácie pre Power Apps a Power Automate a ich výhody a dôsledky pre platformu Microsoft Power Platform.

Bežné funkcie SQL: Prehľad

Bežné funkcie SQL: Prehľad

Objavte niektoré bežné funkcie SQL, ktoré môžeme použiť, ako napríklad reťazec, dátum a niektoré pokročilé funkcie na spracovanie alebo manipuláciu s údajmi.

Vytvoření šablony LuckyTemplates: Průvodce a tipy

Vytvoření šablony LuckyTemplates: Průvodce a tipy

V tomto tutoriálu se naučíte, jak vytvořit dokonalou šablonu LuckyTemplates, která je nakonfigurována podle vašich potřeb a preferencí.

Parametry pole a malé násobky v LuckyTemplates

Parametry pole a malé násobky v LuckyTemplates

V tomto blogu si ukážeme, jak vrstvit parametry pole s malými násobky, abychom vytvořili neuvěřitelně užitečné přehledy a vizuály.

LuckyTemplates Rank a vlastní seskupení

LuckyTemplates Rank a vlastní seskupení

V tomto blogu se dozvíte, jak používat funkce hodnocení LuckyTemplates a vlastní seskupování k segmentaci ukázkových dat a jejich seřazení podle kritérií.

Zobrazení kumulativního součtu pouze do určitého data v LuckyTemplates

Zobrazení kumulativního součtu pouze do určitého data v LuckyTemplates

V tomto tutoriálu se budu zabývat konkrétní technikou, jak zobrazit kumulativní součet pouze do určitého data ve vašich vizuálech v LuckyTemplates.

Bullet Charts: Pokročilé vlastní vizuální prvky pro LuckyTemplates

Bullet Charts: Pokročilé vlastní vizuální prvky pro LuckyTemplates

Naučte se vytvářet a přizpůsobovat Bullet grafy v LuckyTemplates, které se používají hlavně pro měření výkonu oproti cílovým nebo předchozím rokům.