Python das fast wie Perl ausschaut

Code: Alles auswählen
listD= reduce(lambda d,v:(d.setdefault(v,None),d)[1], listD, {}).keys()
Code: Alles auswählen
listD= reduce(lambda d,v:(d.setdefault(v,None),d)[1], listD, {}).keys()
Code: Alles auswählen
longList= ['A','B','A','C','D','A','E','F','D']
redList=map(lambda tpl:tpl[0], filter(lambda tpl: longList.index(tpl[0])==tpl[1], zip(longList, xrange(len(longList)))))
Code: Alles auswählen
reduce(lambda lP,itemP: (itemP not in lP) and lP.append(itemP) or lP, LONGLIST, [])
Code: Alles auswählen
>>> from sets import Set
>>> longList = ['A', 'B', 'A', 'C', 'D', 'A', 'E', 'F', 'D']
>>> list(Set(longList))
['A', 'C', 'B', 'E', 'D', 'F']
Code: Alles auswählen
longList = ['A', 'B', 'A', 'C', 'D', 'A', 'E', 'F', 'D']
print [item for i,item in enumerate(longList) if i == "".join(longList).find(item)]
Code: Alles auswählen
[item for i,item in enumerate(longList) if item not in longList[:i]]
Code: Alles auswählen
[l[i] for i in xrange(len(l)) if l[i] not in l[:i]]
Da ja jetzt Python2.4 angesagt ist, geht es noch kürzer:Dookie hat geschrieben:Hallo,
hier mal eine Python2.3 Version, leider bleibt die Sortierung auch hier nicht erhalten.DookieCode: Alles auswählen
>>> from sets import Set >>> longList = ['A', 'B', 'A', 'C', 'D', 'A', 'E', 'F', 'D'] >>> list(Set(longList)) ['A', 'C', 'B', 'E', 'D', 'F']
Code: Alles auswählen
Python 2.4 (#1, Dec 1 2004, 11:09:16)
[GCC 3.3.2 20031022 (Red Hat Linux 3.3.2-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> longList = ['A', 'B', 'A', 'C', 'D', 'A', 'E', 'F', 'D']
>>> print list(set(longList))
['A', 'C', 'B', 'E', 'D', 'F']
>>>
Na dann versuchs mal mit 2.3.jens hat geschrieben: Warum braucht man dazu v2.4 ???
Hat keiner behauptet. Ist ja nur die 2.4-Version von Dookies Variante.jens hat geschrieben: Außerdem ist die Sortierung doch auch nicht wirklich richtig...
Weil sets jetzt in C implementiert sind und direkt über set() als builtin verfügbar sind.jens hat geschrieben:Warum braucht man dazu v2.4 ???
Außerdem ist die Sortierung doch auch nicht wirklich richtig...
Code: Alles auswählen
(item for (i,item) in enumerate(longList) if item not in longList[:i])
Code: Alles auswählen
def count_words(liste):
liste.sort()
current_pos = 0
first_pos = 0
out_liste = []
nr_liste = []
list_length = len(liste)
word = liste[current_pos]
while current_pos <= list_length:
if current_pos < list_length:
new_word = liste[current_pos]
if word != new_word:
last_pos = current_pos - 1
anzahl_vorkommen = last_pos - first_pos
out_liste.insert(0, word)
nr_liste.insert(0, [word, anzahl_vorkommen + 1])
first_pos = current_pos
word = liste[current_pos]
else:
last_pos = current_pos - 1
anzahl_vorkommen = last_pos - first_pos
out_liste.insert(0, word)
nr_liste.insert(0, [word, anzahl_vorkommen + 1])
current_pos = current_pos + 1
out_liste.reverse()
nr_liste.reverse()
return out_liste, nr_liste, list_length
Code: Alles auswählen
def count_words2(liste):
out_liste = [item for (i,item) in enumerate(liste) if item not in liste[:i]]
nr_liste = [[item, liste.count(item)] for item in out_liste]
list_length = len(liste)
return out_liste, nr_liste, list_length
Code: Alles auswählen
def count_words3(liste):
wc = {}
for w in liste:
wc[w] = 1 + wc.get(w,0)
return wc.keys(),wc.items(),len(liste)
Code: Alles auswählen
from sets import Set # für Pythonversion < 2.4
def count_words3(liste):
nr_liste = [[item, liste.count(item)] for item in Set(liste)]
out_liste = [item for item, nr in nr_liste]
list_length = sum([nr for item, nr in nr_liste])
return out_liste, nr_liste, list_length