Omezení rozsahu pole – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Omezení rozsahu pole – Python – Fórum – Programujte.comOmezení rozsahu pole – Python – Fórum – Programujte.com

 

ppremos0
Duch
24. 4. 2013   #1
-
0
-

Zdravím, 

nevěděl by někdo, jak v Pythonu (2.7) zjistit u vypočtených hodnot uložených do pole nulové hodnoty?

Python vůbec neovládám a ted v něm musím mít něco do školy.

Poté odstranit nulové hodnoty z pole, zjistit délku nenulových hodnot a touto délkou omezit druhé pole, taktéž odstraněním zbývajících hodnot (at už nulových nebo nenulových)? 

Např je pole A a pole B

A=[1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0] - zjistit, že máme pouze 9 nenulových hodnot
Nove A=[1,2,3,4,5,6,7,8,9]

Poté B=[7,8,1,2,3,5,4,7,8,9,4,2,3,5,4,5] - omezení délkou pole A 
Nove B=[7,8,1,2,3,5,4,7,8]

Díky 

Nahlásit jako SPAM
IP: 89.176.65.–
JoDiK
~ Anonymní uživatel
987 příspěvků
25. 4. 2013   #2
-
0
-

#1 ppremos
Python také neovládám, ale co ovládám je problematika školství:

"Python vůbec neovládám a ted v něm musím mít něco do školy."

Pokud v něm něco musíš mít do školy a přitom ho vůbec neovládáš, tak jsi tu školu zřejmě flákal. Flákače lidi moc rádi nemají a pochybuju, že za nějaký "díky" budou za tebe dělat práci...

Nahlásit jako SPAM
IP: 88.103.236.–
Wrunx
~ Anonymní uživatel
35 příspěvků
25. 4. 2013   #3
-
0
-

Nikdy není pozdě začít s Pythonem ;-)

Což takhle v prvním kroku se podívat na funkci filter()  ?

Nahlásit jako SPAM
IP: 188.120.195.–
ppremos0
Duch
26. 4. 2013   #4
-
0
-

#3 Wrunx
Díky a co takhle?

pole=[2,3,1,2,3,4,5,8,0,0,0,0,0,0]
pole2=[2,3,1,2,3,4,5,6,8,7,8,9,6,5,1,3,2,2,2] 
j=[]       
for i in pole: 
    if i>0:
        j.append(i)        
pole2=len(j)
Nahlásit jako SPAM
IP: 89.176.65.–
ppremos0
Duch
26. 4. 2013   #5
-
0
-

#2 JoDiK


Měl jsem asi napsat nějaký příklad, jak bych postupoval, to uznávám...ovšem ty vůbec neznáš moji situaci a podle toho jednáš. Jestli tě něco trápí, tak si příště vymysli jiný způsob, jak se svého trápení zbavit a problematiku školství jdi řešit někam...

Nahlásit jako SPAM
IP: 89.176.65.–
Wrunx
~ Anonymní uživatel
35 příspěvků
28. 4. 2013   #6
-
+1
-
Zajímavé

2ppremos: sám asi zjistíš že tebou uvedený příklad nebude úplně to pravé ořechové. Nápad na řešení je ale ve své podstatě dobrý - krokovat vstupní pole, zjistit počet nenulových prvků (pozor, obecně podmínka x>0 je jen zpola dostačující pro učení zda je x nenulové!) a podle toho oříznout pole2. Jen to nemáš úplně přesně napsané.

Do funkce filter() jsem tě směroval proto, že se dá díky ní celý ten cykl procházení vyřešit jedním příkazem:

pole_nenul=filter(lambda x: x !=0, pole)

Co jsem to vlastně napsal, se dá snadno dohledat na netu, pythonská lambda a filter je tam popsán i česky dostatečně podrobně. Každopádně, v pole_nenul budeš mít nenulové prvky z pole. Jejich pomocí se pak dá druhým příkazem vypsat pole2 omezené délkou pole - mrkni např. na http://www.geon.wz.cz/PyPriruckaAlfa/, sekce "Operace nad všemi posloupnostmi (řetězce, seznamy, n-tice)"

Pokud se přesto chceš držet vlastní programové konstrukce, tak po přečtení odkazu bys už lehce mohl zjistit, co a kde opravit aby ti z toho lezl požadovaný výsledek. Kdyžtak znovu napiš :-)

;-)

Nahlásit jako SPAM
IP: 188.120.195.–
sputnikone+1
Věrný člen
28. 4. 2013   #7
-
0
-

#5 ppremos
Filter (jak psal kolega Wrunx) a slice. Jinak JoDiKovi je velmi pravděpodobně tvoje nevzdělanost u zádě a s jeho názorem se plně ztotožňuji...

Nahlásit jako SPAM
IP: 89.102.7.–
ppremos0
Duch
1. 5. 2013   #8
-
0
-

#6 Wrunx
Díky za radu.

A ještě bych měl jeden dotaz :-) 

Mám ještě jeden případ, kdy mi nejde použít filter() a tak jsem ještě zkusil použít smyčku WHILE, ale uvnitř FOR to nefunguje...
 


y=[]
x=[1,2,3,4,5,6,7,8,9,10,11,12,13]     
F=[0.1]
cx=[1,2,3,4,5,6,1,2,3,1,0.1,0.01,0.2] 
for i in F:    logv=2*np.log(cx / (0.5 * i))
    logv[np.where(logv<0)]=0
    while logv > 0:
        y.append(logv)
    else:
        break
x=x[:len(y)]
Nahlásit jako SPAM
IP: 89.176.65.–
sputnikone+1
Věrný člen
1. 5. 2013   #9
-
0
-

#8 ppremos
Kde nejde použít filter?

Nahlásit jako SPAM
IP: 89.102.7.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 24 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý