- Garmin Forerunner 970 - fogd a pénzt, és fuss!
- Honor Magic5 Pro - kamerák bűvöletében
- Honor Magic6 Pro - kör közepén számok
- OnePlus One - Kína már itt One
- Android szakmai topik
- Bemutatkozott a Poco X7 és X7 Pro
- Honor Play - játék az árakkal
- A sógorokhoz érkezik a kompakt Vivo X200 FE
- Magisk
- Google Pixel topik
Új hozzászólás Aktív témák
-
BoB
veterán
válasz
K1nG HuNp #1526 üzenetére
Gyorsan írtam nem elég pythonos, ez ugyanaz csak jobban olvasható:
lista = [(1, 23), (2, 45), (3, 23)]
def bevetel(bev_lista):
penz = 0
for szek in bev_lista:
if szek[0] == 1:
penz += szek[1] * 5000
if szek[0] == 2:
penz += szek[1] * 4000
if szek[0] == 3:
penz += szek[1] * 3000
return penz
print(bevetel(lista)) -
apezka
aktív tag
-
BoB
veterán
válasz
K1nG HuNp #1521 üzenetére
lista = [(1, 23), (2, 45), (3, 23)]
def bevetel(bev_lista):
penz = 0
for i in range(0, len(bev_lista)):
if bev_lista[i][0] == 1:
penz += bev_lista[i][1] * 5000
if bev_lista[i][0] == 2:
penz += bev_lista[i][1] * 4000
if bev_lista[i][0] == 3:
penz += bev_lista[i][1] * 3000
return penz
print(bevetel(lista)) -
cousin333
addikt
válasz
K1nG HuNp #1479 üzenetére
Akkor írhatod így is:
for index, kod in enumerate(adatok, 1):
szamok = set(kod)
if len(kod) != len(szamok):
ismetlodo = index
break
else:
ismetlodo = NoneA második példád elég célravezetőnek tűnik, momentán én sem tudnék egyszerűbb megoldást írni. Esetleg a
random.randrange()
függvényt használhatod, akkor nincs a második "-1", de sokkal egyszerűbb nem lesz. Ha minden igaz:n = 6
kodszam = random.randrange(10**(n-1), 10**n) -
cousin333
addikt
válasz
K1nG HuNp #1477 üzenetére
Az
if
-et nem tudja megszakítani, nincs is értelme. Szóval a külsőfor
-ból lép ki.Ha jól látom ez a kód a listákból álló adatok nevű lista annyiadik elemét adja meg (1-essel kezdve a számozást), ahol a listában van legalább egy ismétlődő elem.
Lehetett volna egyszerűbben is:
for index, kod in enumerate(adatok, 1):
szamok = set(kod)
if len(kod) != len(szamok):
breakEkkor az index értéke eleve a keresett ismetlodo lesz. Valószínűleg létezik szebb megoldás is.
-
cousin333
addikt
válasz
K1nG HuNp #1422 üzenetére
Az eredményt tekintve megegyeznek. A technikai hátteret nem ismerem, de a list comprehension (az első megoldás) nem csak szebb és kompaktabb, hanem valamivel gyorsabb is. A disassembly jelentősen különbözik, de az első esetben van egy függvényhívás, aminek a hossza nem ismert.
ui: Nyilván a második példád helyesen:
lista = []
for nev, sorszam, valami in adatok:
if sorszam == 2:
lista.append((nev, sorszam, valami))Szerintem a fentiek igazak a második esetben is, a
lambda
javára. -
EQMontoya
veterán
válasz
K1nG HuNp #1391 üzenetére
Akkor kicsit nézzük tudományosan, hogy mit szeretnél visszaadni.
A függvényed visszatérési értéke egy tuple. Ami egy darab objektum, rendelkezik n (jelen esetben 3) elemmel.
Amit Te csinálni szeretnél, az az, hogy ezt visszakapott tuplet nem egyben szeretnéd átadni argumentumként, hanem külön-külön.Tehát:
x=some_func(...)
print(“{}, {}, {}”.format(x[0], x[1], x[2])Ez ugye így nem jó, mert egy tuplet adunk át:
x=some_func(...)
print(“{}, {}, {}”.format(x))De a Python szerencsére tud olyat, hogy egy listát át tudsz adni úgy egy függvénynek, hogy minden eleme egy külön argumentum lesz.
Ha láttál már más nyelven variadic arg. függvényt, na ez az.
Erre való a *.
Így ni:print(“{}, {}, {}”.format(*some_func()))
Ilyet lehet csinálni dicttel is.
Pl.
some_dict={"egy": "1", "ketto": "2"}
some_func(**some_dict)Ez egyenlő a következővel:
some_func(egy=1, ketto=2)
-
cousin333
addikt
válasz
K1nG HuNp #1389 üzenetére
Igen, úgy van, ahogy leírtad. Az #1387-ban lévő megoldás is helyes, de nem szerencsés. Azzal keverted meg magad, hogy mindent
hossz
-nak hívsz.Az eredeti
hossz
egy lista, tehát iterálható. Amax()
pedig pont ilyet vár, hogy végiglépdeljen (iteráljon) az elemeken. Akey
paraméter egy függvényt vár, ami egyenként végrehajtódik minden egyes listaelemen. A max aztán ennek a függvénynek a kimeneteire vonatkozik. Az alapverzió valahogy így néz ki:hossz = [[1, 230], [2, 324], [3, 69], [4, 5], [5, 240], [6, 248]]
def masodik(lista):
return lista[1]
max_hossz = max(hossz, key=masodik)Namost ehhez a feladathoz teljesen felesleges egy külön függvényt definiálni. Erre találták ki a
lambda
függényt, ami tulajdonképpen egy rövid, névtelen, "eldobható" megoldás:hossz = [[1, 230], [2, 324], [3, 69], [4, 5], [5, 240], [6, 248]]
max_hossz = max(hossz, key=lambda x: x[1])A fenti esetben az x a hossz lista elemeit jelenti (egyenként):
x=[1, 230]
majdx=[2, 324]
, aztánx=[3, 69]
... stb. A visszatérési érték pedig ezen elemek 2. tagja, amikre aztán a max kiszámítja a maximumot. Az eredmény viszont nem ez a szám lesz, hanem az az eredeti listaelem, ami ezt a számot adta:[2, 324]
. -
sh4d0w
félisten
válasz
K1nG HuNp #1387 üzenetére
A lambda ugy mukodik, mint a fuggvenyek (function), de miutan hasznaltad, eldobodik, nem foglalja a memoriat - ezert is nem adsz nevet neki.
pl.:
(lambda x: x in [list],mylist)
x a valtozod, amit hasznalsz; aztan megmondod, mit szeretnel tenni vele (pl. megnezni, hogy szerepel-e egy listaban); majd megmondod, honnan szeretned az x ertekeit behelyettesiteni (pl. a mylist-bol).
-
-
sh4d0w
félisten
válasz
K1nG HuNp #1270 üzenetére
address=netifaces.ifaddresses(i)
if i=="lo":
pass
else:
if len(i)>=8:
print(blue+i+black,"\t",address[netifaces.AF_INET][0]['addr'])
else:
print(blue+i+black,"\t\t",address[netifaces.AF_INET][0]['addr'])Ez a lényege. Terveim szerint mindent megosztok, amin eddig machináltam itthon - hamarosan.
Egyébként most fedeztem fel, hogy ez a kód még mindig nem bolondbiztos, mert csak az első címet adja vissza, de mi van, ha egy NIC-nek több is van?
-
sonar
addikt
válasz
K1nG HuNp #1264 üzenetére
Azért mert az r fogja tartalmazni a belépéshez szükséges adatokat
= praw.Reddit(username = config.username,
password = config.password,
client_id = config.client_id,
client_secret = config.client_secret,
user_agent = "Bence's first reddit bot")két függvénybe van elkülönitve a folyamat. Az első a belépés (bot_belepes()) a másik meg a robotolás (bot_futtatas(r))
Új hozzászólás Aktív témák
Hirdetés
- GAMER PC : RYZEN 5 4500 / 16GB DDR4 / ASUS RX 480 8GB / WiFi / Bluetooth / 512GB M.2 SSD / 500GB HDD
- Dell Latitude 7390, 13,3" FHD IPS , I5-7300U CPU, 16GB DDR4, 512GB SSD, WIN 11, ( olvasd végig )
- Acer PREDATOR HELIOS NEO 16 / i9-14900HX / RTX 4070 (140W) / 1 TB SSD / 240HZ
- Topping A70 Pro fejhallgató erősítő
- Topping D70 Pro Octo DAC
- LG 27GP95RP - 27" Nano IPS - UHD 4K - 160Hz 1ms - NVIDIA G-Sync - FreeSync Premium PRO - HDR 600
- TP-Link Archer C1200 Router eladó (1200 Mb/s Wi-Fi)
- 35" ASUS ROG Swift PG35VQ curved GAMER monitor
- AKCIÓ! Apple MacBook Pro 13 2022 M2 8GB 256GB SSD garanciával hibátlan működéssel
- Telefon felvásárlás!! Honor 400 Lite, Honor 400, Honor 400 Pro
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged