Na przykład, jak przekonwertować [1, 5, 7] na [1,2,5,6,7,8] na pytona? [x, x + 1 dla X w [1,5,7]] nie może pracować na pewno ...Jak przekonwertować listę przez odwzorowanie elementu na wiele elementów w python?
Odpowiedz
Nie wiem, czy jest to najlepszy sposób, ale chciałbym zrobić:
l = [1, 5, 7]
print([y for x in l for y in (x, x + 1)])
Innym sposobem korzystania itertools.chain.from_iterable
:
from itertools import chain
l = [1, 5, 7]
print(list(chain.from_iterable((x, x + 1) for x in l)))
można zrobić swoją listę logikę rozumienia ze krotki a następnie spłaszczyć wynikowy listę:
[n for pair in [(x, x+1) for x in [1,5,7]] for n in pair]
Jeśli chcesz wypełnić listę liczbami od wartości min do max + 1, możesz użyć [i for i in range (min(x),max(x)+2)]
, zakładając, że x
jest twoją listą.
I zawsze można overcomplicate problem z operator
, imap()
, partial()
, izip()
i chain()
:
>>> from itertools import chain, izip, imap
>>> from operator import add
>>> from functools import partial
>>>
>>> l = [1, 5, 7]
>>>
>>> list(chain(*izip(l, imap(partial(add, 1), l))))
[1, 2, 5, 6, 7, 8]
Co się dzieje tutaj:
- wykonujemy iterator nad
l
które odnoszą sięadd
function z1
jako argument - spakowaliśmy początkowy l ist z iteratora zwróconego przez
imap()
do wytworzenia pary x, x + 1 wartości - my flatten the list with
chain()
i przekonwertować go na liście, aby zobaczyć wynik
prosty sposób myślenia o problemie to zrobić druga lista zwiększonymi wartościami i dodać go do pierwotnej listy, a następnie posortować je:
l = [1, 5, 7]
m = l + [i+1 for i in l]
m.sort()
print m # [1, 2, 5, 6, 7, 8]
można łączyć kilka pomysłów z odpowiedzi alecxe i co już mieliśmy:
>>> import itertools
>>>
>>> a = [1, 5, 7]
>>> b = ((x, x+1) for x in a)
>>>
>>> list(itertools.chain(*b))
[1, 2, 5, 6, 7, 8]
Co mam zrobić to:
Zdefiniuj w
b
generator expression co pozwala nam mieć (coś, co wygląda jak) krotki, które nie wyglądały jak((1, 2), (5, 6), (7, 8))
ale bez oceniania go od razu. Miałoby to również działać ze zrozumieniem listy.Unpack
b
in the argument list z itertools.chain(). Byłby to odpowiednikitertools.chain((1, 2), (5, 6), (7, 8))
. Ta funkcja łączy swoje argumenty.Użyj listy(), aby utworzyć listę z wartości zwracanej funkcji
itertools.chain()
, ponieważ jest to iterator.
Można również pracował bez etapu pośredniego:
>>> import itertools
>>> list(itertools.chain(*((x, x+1) for x in [1, 5, 7])))
[1, 2, 5, 6, 7, 8]
Ale "Proste jest lepsze niż kompleks"
mam nadzieję, że to pomaga.
Dodałbym więcej linków, gdybym miał więcej reputacji, przepraszam.
Utwórz funkcję generatora, która będzie iterować nad listą i z kolei otrzyma każdy element i ten element plus jeden. Iteruj nad swoim generatorem.
def foo(lyst):
for element in lyst:
yield element
yield element + 1
>>> print(list(foo([1, 5, 7])))
[1, 2, 5, 6, 7, 8]
>>>
>>> print([element for element in foo([1, 5, 7])])
[1, 2, 5, 6, 7, 8]
>>>
- 1. Usuń wiele elementów listy (Python)
- 2. Jak przekonwertować listę pojedynczych elementów na java 8 opcjonalnie
- 3. Jak przekonwertować listę obiektów na listę interfejsów?
- 4. Python, Sqlite3 - Jak przekonwertować listę na komórkę BLOB
- 5. Jak mogę przekonwertować Pandas DataFrame na listę?
- 6. Jak podzielić listę ImmutableJS na wiele list?
- 7. Jak przekonwertować numeryczne łańcuchy znaków na listę w Pythonie
- 8. W Pythonie, w jaki sposób przekonwertować listę elementów i ciągów znaków na kod Unicode?
- 9. Jak wstawiać wiele elementów do jednego elementu przez dodanie w pętli for?
- 10. Jak przekonwertować JSONArray na listę z Gsonem?
- 11. Jak przekonwertować ramkę danych na zagnieżdżoną listę?
- 12. Jak przekonwertować listę na tabelę danych
- 13. Jak przekonwertować listę numerów na mapę?
- 14. Jak przekonwertować wynik zapytania LINQ na listę?
- 15. Jak przekonwertować kolumnę DataTable na listę
- 16. Jak przekonwertować znaki łańcuchowe na listę?
- 17. Jak mogę przekonwertować curveTo() na listę punktów?
- 18. Jak przekonwertować listę obiektów na CSV?
- 19. Jak przekonwertować java.util.List na listę Scala
- 20. Jak przekonwertować listę 2D na listę 1D za pomocą strumieni?
- 21. Jak wyciąć listę z elementu n na koniec w pythonie?
- 22. dostać wiele elementów przez ID w liście z jquery
- 23. Jak przekonwertować listę do JavaRDD
- 24. Ustawienie javascript na wiele elementów
- 25. Jak posortować listę w języku Python?
- 26. Pomijanie elementów na liście Python
- 27. active_admin - wyświetla listę elementów, które należy do innego elementu
- 28. Python - Grupa przez i podsumować listę krotek
- 29. Grails jeden-wiele odwzorowanie stalestale wyjątku na klucz złożony
- 30. Python: Jak uzyskać wiele elementów wewnątrz nawiasów kwadratowych
Nie sądzę, że to właśnie próbują osiągnąć. – 101