Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Arny 18. 08. 2015, 00:54:16
-
Zdravím, mám seznam ve kterém jsou názvy domén bez www, čili aaa.cz, bbb.cz ccc.cz atd.. a snažím se z tohoto seznamu získat všechny názvy bez toho .cz (dohromady bez oddělovače). Snažím se, ale vůbec mi to nejde :-( Nepomohl by mi prosím někdo ? Díky moc.
mylist = ['aaa.cz', 'bbb.cz', 'ccc.cz']
names = mylist(key=lambda value: int(value.split('.', 1)[1]))
print(names) # aaabbbccc
-
Zdar, zpusobu je mnoho. Napr.
print("".join(s[:-3] for s in mylist))
print("".join(s.split(".")[0] for s in mylist))
# prip se podivej na:
urllib.parse
# nebo
urllib.split
-
V Pythonu je místo split lepší používat slicing ([od:do]). Pro nalezení poslední tečky je rfind('.').
[ x[:x.rfind('.')] for x in mylist ]
-
V Pythonu je místo split lepší používat slicing ([od:do]). Pro nalezení poslední tečky je rfind('.').
No ale tady v tom pripade je urcite lespi pouzit ten split. :)
-
V Pythonu je místo split lepší používat slicing ([od:do]). Pro nalezení poslední tečky je rfind('.').
No ale tady v tom pripade je urcite lespi pouzit ten split. :)
V čem je to lepší oproti tomu, co jsem napsal? Tedy kromě toho, že to bude o dost pomalejší
-
import time
mylist = ['sadasda.asdad']*10000000
start_time = time.clock()
[ x[:x.rfind('.')] for x in mylist ]
print(time.clock() - start_time, "seconds rfind")
start_time = time.clock()
[ x.split('.')[0] for x in mylist]
print(time.clock() - start_time, "seconds split")
3.5121710000000004 seconds rfind
3.4531870000000002 seconds split
-
D9ky moc, ale nepřemýšlel jsem moc dopředu :-( Ty tečky tam potřebuju :-(
-
import time
mylist = ['sadasda.asdad']*10000000
start_time = time.clock()
[ x[:x.rfind('.')] for x in mylist ]
print(time.clock() - start_time, "seconds rfind")
start_time = time.clock()
[ x.split('.')[0] for x in mylist]
print(time.clock() - start_time, "seconds split")
3.5121710000000004 seconds rfind
3.4531870000000002 seconds split
To je hezké, ale split nedá požadovaný výsledek...
>>> x = ["abc.def.cz", "ayy.lmao.com"]
>>> [a.split('.')[0] for a in x]
['abc', 'ayy']
>>> [a.split('.') for a in x]
[['abc', 'def', 'cz'], ['ayy', 'lmao', 'com']
-
import time
mylist = ['sadasda.asdad']*10000000
start_time = time.clock()
[ x[:x.rfind('.')] for x in mylist ]
print(time.clock() - start_time, "seconds rfind")
start_time = time.clock()
[ x.split('.')[0] for x in mylist]
print(time.clock() - start_time, "seconds split")
3.5121710000000004 seconds rfind
3.4531870000000002 seconds split
To je hezké, ale split nedá požadovaný výsledek...
>>> x = ["abc.def.cz", "ayy.lmao.com"]
>>> [a.split('.')[0] for a in x]
['abc', 'ayy']
>>> [a.split('.') for a in x]
[['abc', 'def', 'cz'], ['ayy', 'lmao', 'com']
A ta vstupní data jste změnil schválně, aby to dosáhlo to co chcete, že :D
-
Data jsem změnil tak, aby demonstrovala nedostatek při použití split. Ze zadání není zřejmé, jestli tam jsou jenom 1st level domain názvy nebo jestli to má umět i věci jako bagr.wz.cz. A v tokovém případě je zpravidla lepší pracovat s obecnějším zadáním.
-
Data jsem změnil tak, aby demonstrovala nedostatek při použití split. Ze zadání není zřejmé, jestli tam jsou jenom 1st level domain názvy nebo jestli to má umět i věci jako bagr.wz.cz. A v tokovém případě je zpravidla lepší pracovat s obecnějším zadáním.
Když už se snažím udělat z někoho blbce, tak to nejdřív zkusím změnit pořádně, abych náhodou neudělal blbce ze sebe
>>> x = ["abc.def.cz", "ayy.lmao.com"]
>>> [a.split('.')[-2] for a in x]
['def', 'lmao']
-
Když už se snažím udělat z někoho blbce, tak to nejdřív zkusím změnit pořádně, abych náhodou neudělal blbce ze sebe
>>> x = ["abc.def.cz", "ayy.lmao.com"]
>>> [a.split('.')[-2] for a in x]
['def', 'lmao']
bagr.wz.cz -> wz ... to mi jako jednoznačně dobrý řešení teda nepřijde.
-
bagr.wz.cz -> wz ... to mi jako jednoznačně dobrý řešení teda nepřijde.
Počujte, Kefalín. A čo si vy predstavujete pod takým dobrým riešením? Toto?
>>> mylist = ['www.bagr.cz']
>>> [ x[:x.rfind('.')] for x in mylist ]
['www.bagr']
Kde je pointa? Nikde. Můžeme řešit blbosti a vždycky se najde případ, kdy to nebude fungovat "dobře". Ať už to "dobře" znamená cokoliv.
-
bagr.wz.cz -> wz ... to mi jako jednoznačně dobrý řešení teda nepřijde.
Počujte, Kefalín. A čo si vy predstavujete pod takým dobrým riešením? Toto?
>>> mylist = ['www.bagr.cz']
>>> [ x[:x.rfind('.')] for x in mylist ]
['www.bagr']
Kde je pointa? Nikde. Můžeme řešit blbosti a vždycky se najde případ, kdy to nebude fungovat "dobře". Ať už to "dobře" znamená cokoliv.
...nebo si můžu přečíst zadání :^)
Zdravím, mám seznam ve kterém jsou názvy domén bez www [...] snažím se [...] získat všechny názvy bez toho .cz...
-
bagr.wz.cz -> wz ... to mi jako jednoznačně dobrý řešení teda nepřijde.
Počujte, Kefalín. A čo si vy predstavujete pod takým dobrým riešením? Toto?
>>> mylist = ['www.bagr.cz']
>>> [ x[:x.rfind('.')] for x in mylist ]
['www.bagr']
Kde je pointa? Nikde. Můžeme řešit blbosti a vždycky se najde případ, kdy to nebude fungovat "dobře". Ať už to "dobře" znamená cokoliv.
...nebo si můžu přečíst zadání :^)
Zdravím, mám seznam ve kterém jsou názvy domén bez www [...] snažím se [...] získat všechny názvy bez toho .cz...
Přesně tak, změní vstupní data a zadání, aby demonstroval jak je jeho řešení lepší, když neprošlo to, že to má být údajně rychlejší.
Prostě jen další chytrolín co za každých okolností musí mít pravdu a když se mu ukáže, že ji nemá, tak si věci překroutí jinak a pak zase jinak...
Kde se tu bere tolik ješitů a psychopatů :D
-
By mě zajímalo o kom mluvíte... já o rychlosti nic neřikal, s rsplytem sem nepřišel, zadání sem nezměnil a ten/ti druhý/druzí zas brání split a ne "údajně rychlejší" rfind.