Hirdetés
- Mobilhasználat külföldön
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Milyen okostelefont vegyek?
- Samsung Galaxy S21 FE 5G - utóirat
- Visszatérnek a Samsung tervezte CPU-magok és GPU az Exynos 2800-ban?
- Yettel topik
- OnePlus 15 - van plusz energia
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- iPhone topik
- Apple iPhone 15 Pro Max - Attack on Titan
Ú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
- HiFi műszaki szemmel - sztereó hangrendszerek
- Nyaralás topik
- Okos Otthon / Smart Home
- Arc Raiders
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Vicces képek
- Azonnali alaplapos kérdések órája
- Konkrét moderációval kapcsolatos kérdések
- A legrosszabb CPU-k – az ExtremeTech szerint
- Ingatlanos topic!
- További aktív témák...
- Szép! Lenovo Thinkpad T14s G2 Üzleti "Golyóálló" Laptop 14" -50% i5-1135G7 4Mag 16GB/512GB FHD IPS
- Bomba ár! Lenovo ThinkPad Yoga 370 - i5-G7 I 8GB I 256SSD I 13,3" FHD Touch I W11 I Cam I Gari!
- Bomba ár! Lenovo ThinkPad Yoga 260 - i5-G6 I 8GB I 256SSD I 12,5" Touch I W11 I Cam I Gari!
- HP EliteBook 850 G8 Fémházas Tartós Laptop 15,6" -65% i7-1165G7 16/512 Iris Xe FHD
- Bomba ár! Lenovo ThinkPad X390: i5-G8 I 16GB I 256-1TSSD I 13,3" FHD Touch I HDMI I Cam I W11 I Gar
- HIBÁTLAN iPhone 12 Mini 64GB White -1 ÉV GARANCIA - Kártyafüggetlen, MS3644
- VICC ÁR! Dell Precision 7530 - Xeon E2186M (i9-8950HK++) / 32GB RAM 512GB SSD Quadro P2000
- 152 - Lenovo LOQ (15IRH8) - Intel Core i5-12450H, RTX 4060
- Apple iPhone 12 64GB, Kártyafüggetlen, 1 Év Garanciával
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest
, szóval:



