Wie teilt man Elemente einer Liste?

Lesezeit: 2 Minuten

Wie teilt man Elemente einer Liste
Benutzer808545

Ich habe eine Liste:

my_list = ['element1t0238.94', 'element2t2.3904', 'element3t0139847']

Wie kann ich die löschen t und alles danach, um dieses Ergebnis zu erhalten:

['element1', 'element2', 'element3']

Etwas wie:

>>> l = ['element1t0238.94', 'element2t2.3904', 'element3t0139847']
>>> [i.split('t', 1)[0] for i in l]
['element1', 'element2', 'element3']

  • Ich verstehe das fast. Was macht die 1 im Argument für die Aufteilung? Dasselbe gilt für den Index 0 nach den Klammern. Erstellt dies eine neue Liste, indem das nullte Element dessen verwendet wird, was i war? Ist die 1 dann nur eine weitere Teilung, die den Rest der Zeichenfolge effektiv loswird, wie es das OP wollte?

    – Malik A. Rumi

    19. November 16 um 1:59 Uhr

  • Da die Liste Zeichenketten enthält, ist die Variable i eine Zeichenkette. Also ruft i.split(‘t’, 1) die Methode split() von Strings auf. Pro die Dokumentation, ist der erste Parameter dieser Methode die Zeichenfolge, durch die geteilt werden soll, und der zweite die maximale Anzahl der durchzuführenden Teilungen. Die Methode gibt die Liste der Zeichenfolgen zurück, die sich aus der Durchführung der Teilung ergeben, also “[0]” gibt den ersten geteilten String in der Ergebnisliste zurück.

    – jkl

    29. März 17 um 22:30 Uhr

  • Als ich dies für meinen eigenen Code versuchte, gab es einen Fehler zurück, dass das Objekt „list“ kein Attribut „split“ hat. Ich bin verwirrt, wie ich das umgehen soll.

    – keitereth24

    28. Juli 17 um 19:19 Uhr

  • @ keitereth24 , Römische geteilte Liste von Zeichenfolgen. Möglicherweise haben Sie eine Liste von Listen

    – AAI

    26. April 18 um 16:20 Uhr

myList = [i.split('t')[0] for i in myList] 

Versuchen Sie, jedes Element der Liste zu durchlaufen, es dann am Tabulatorzeichen zu teilen und es einer neuen Liste hinzuzufügen.

for i in list:
    newList.append(i.split('t')[0])

  • Das funktioniert, aber Listenverständnisse sind ein viel besserer Weg, dies zu tun

    – dave

    14. Juli 11 um 16:05 Uhr

Liste nicht als Variablennamen verwenden. Sie können sich auch den folgenden Code ansehen:

clist = ['element1t0238.94', 'element2t2.3904', 'element3t0139847', 'element5']
clist = [x[:x.index('t')] if 't' in x else x for x in clist]

Oder direkte Bearbeitung:

for i,x in enumerate(clist):
    if 't' in x:
        clist[i] = x[:x.index('t')]

Ich musste eine Liste für die Merkmalsextraktion in zwei Teile aufteilen lt,lc:

ltexts = ((df4.ix[0:,[3,7]]).values).tolist()
random.shuffle(ltexts)

featsets = [(act_features((lt)),lc) 
              for lc, lt in ltexts]

def act_features(atext):
  features = {}
  for word in nltk.word_tokenize(atext):
     features['cont({})'.format(word.lower())]=True
  return features

Wie teilt man Elemente einer Liste
Lukas

Lösung mit Karte und Lambda-Ausdruck:

my_list = list(map(lambda x: x.split('t')[0], my_list))

.

758530cookie-checkWie teilt man Elemente einer Liste?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy