Muszę dołączyć do listy przedmiotów. Wiele pozycji na liście to wartości całkowite zwrócone przez funkcję; to znaczy,
myList.append(munfunc())
Jak przekonwertować zwrócony wynik na ciąg, aby dołączyć go do listy?
Czy muszę wykonać następujące czynności dla każdej wartości całkowitej:
myList.append(str(myfunc()))
Czy istnieje bardziej Pythoniczny sposób rozwiązywania problemów z rzucaniem?
Odpowiedzi:
Wywołanie
str(...)
to Pythoński sposób przekonwertowania czegoś na ciąg.Możesz zastanowić się, dlaczego chcesz listę ciągów. Zamiast tego możesz zachować go jako listę liczb całkowitych i konwertować liczby całkowite na ciągi tylko wtedy, gdy chcesz je wyświetlić. Na przykład, jeśli masz listę liczb całkowitych, możesz je przekonwertować jeden po drugim w pętli for i połączyć je za pomocą
,
:źródło
Nie ma nic złego w przekazywaniu liczb całkowitych do str. Jednym z powodów, dla których możesz tego nie zrobić, jest to, że myList naprawdę powinna być listą liczb całkowitych, np. Rozsądne byłoby zsumowanie wartości na liście. W takim przypadku nie przekazuj int do str przed dołączeniem ich do myList. Jeśli ostatecznie nie przekształcisz się w łańcuchy przed dołączeniem, możesz zbudować jeden duży łańcuch, wykonując coś podobnego
źródło
str
? Proszę rozważyć możliwość dodania rozmytej logiki do parsera ;-)można użyć funkcji map w pythonie. Wymaga dwóch argumentów. Pierwszy argument to funkcja, która musi być użyta dla każdego elementu listy. Drugi argument jest iterowalny .
Po konwersji listy do łańcucha można użyć prosty dołączyć funkcję do listy połączyć w jeden ciąg
źródło
powyższa metoda jest najłatwiejszym i najbardziej ogólnym sposobem konwersji listy na ciąg znaków. inną krótką metodą jest-
źródło
Można to zrobić na trzy sposoby.
powiedzmy, że masz listę ints
"-".join(str(n) for n in my_list)
"-".join([str(n) for n in my_list])
"-".join(map(str, my_list))
Jednak, jak stwierdzono w przykładzie timeit na stronie Pythona pod adresem https://docs.python.org/2/library/timeit.html korzystanie z mapy jest szybsze. Więc poleciłbym ci użycie
"-".join(map(str, my_list))
źródło
Twój problem jest raczej jasny. Być może szukasz rozszerzenia, aby dodać wszystkie elementy innej listy do istniejącej listy:
Jeśli chcesz przekonwertować liczby całkowite na ciągi, użyj str () lub interpolacji ciągów, ewentualnie w połączeniu ze zrozumieniem listy, tj.
Wszystko to jest uważane za pytoniczne (ok, wyrażenie generatora jest jeszcze bardziej pytoniczne, ale bądźmy proste i na temat)
źródło
Na przykład:
Jeśli chodzi o mnie, chcę dodać listę
str
przed każdą str:Lub pojedyncza lista:
źródło
Może nie potrzebujesz liczb jako ciągów, po prostu zrób:
Później, jeśli potrzebujesz go jako łańcucha, możesz to zrobić za pomocą łańcucha lub formatu łańcucha:
print "Vastaus5 = %s" % functaulu[5]
źródło
Dlaczego nikt nie wydaje się lubić
repr
?python 3.7.2:
Uważaj jednak, jest to wyraźna reprezentacja. Przykład pokazuje:
więcej informacji na pydocs-repr
źródło