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 ]
Citace od: Sten kdy 18. 08. 2015, 01:32:09
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. :)
Citace od: grr kdy 18. 08. 2015, 01:58:50
Citace od: Sten kdy 18. 08. 2015, 01:32:09
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 :-(
Citace od: somemonster kdy 18. 08. 2015, 08:46:52
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']
Citace od: --,_O_,-- kdy 18. 08. 2015, 12:37:56
Citace od: somemonster kdy 18. 08. 2015, 08:46:52
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.
Citace od: --,_O_,-- kdy 19. 08. 2015, 00:14:49
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']
Citace od: gamer kdy 19. 08. 2015, 08:33:48
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.
Citace od: --,_O_,-- kdy 19. 08. 2015, 12:46:11
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.
Citace od: gamer kdy 19. 08. 2015, 13:31:46
Citace od: --,_O_,-- kdy 19. 08. 2015, 12:46:11
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í :^)
Citace od: Arny kdy 18. 08. 2015, 00:54:16
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...
Citace od: --,_O_,-- kdy 19. 08. 2015, 22:15:49
Citace od: gamer kdy 19. 08. 2015, 13:31:46
Citace od: --,_O_,-- kdy 19. 08. 2015, 12:46:11
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í :^)
Citace od: Arny kdy 18. 08. 2015, 00:54:16
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.