Ú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
lambdajavá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
hosszegy lista, tehát iterálható. Amax()pedig pont ilyet vár, hogy végiglépdeljen (iteráljon) az elemeken. Akeyparamé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
lambdafü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]. -
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).
-
-
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
- Bestbuy játékok
- Motoros topic
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Milyen okostelefont vegyek?
- Kerékpárosok, bringások ide!
- Debrecen és környéke adok-veszek-beszélgetek
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Fejhallgató erősítő és DAC topik
- Apple MacBook
- További aktív témák...
- Dell 27" USB-C Hub Monitor - P2723DE - 27% ÁFÁs
- Lenovo 40AH és 40A1 dokkoló, töltő is.
- MSI GF65 Thin - 15,6"FHD 120Hz IPS - i5-9300H - 16GB - 1,25TB SSD - Win11 - GTX 1660 Ti - MAGYAR
- Azonnali készpénzes INTEL CPU AMD VGA számítógép felvásárlás személyesen / postával korrekt áron
- Samsung Galaxy S21+ / 8/128GB / Kártyafüggetlen / 12Hó Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
, szóval:

