Ich habe eine Liste von Werten: [0,2,3,5,6,7,9]
und möchte eine Liste der Zahlen in der Mitte zwischen jeder Nummer erhalten: [1, 2.5, 4, 5.5, 6.5, 8]
. Gibt es in Python einen ordentlichen Weg, das zu tun?Liste der mittleren Werte zwischen den Werten der Liste erhalten
Antwort
Es ist eine einfache Liste Verständnis (beachten Sie, ich bin asuming Sie alle Ihre Werte als float
s wollen, anstatt eine Mischung aus int
s und float
e):
>>> lst = [0,2,3,5,6,7,9]
>>> [(a + b)/2.0 for a,b in zip(lst, lst[1:])]
[1.0, 2.5, 4.0, 5.5, 6.5, 8.0]
(durch 2.0
Boden Teilung gewährleisten teilungs nicht 2 in Python angewandt)
values = [0,2,3,5,6,7,9]
middle_values = [(values[i] + values[i + 1])/2.0 for i in range(len(values) - 1)]
Dividing von 2.0
statt 2
ist nicht notwendig, in Python 3, oder wenn Sie from __future__ import division
zu chang verwenden e das ganzzahlige Teilungsverhalten.
Die zip
oder itertools.izip
Antworten sind idiomatischer.
[(l[i]+l[i+1])/2 for i in range(len(l)-1)]
Einfache for-Schleife:
nums = [0,2,3,5,6,7,9]
betweens = []
for i in range(1, len(nums)):
if nums[i] - nums[i-1] > 1:
betweens.extend([item for item in range(nums[i-1]+1, nums[i])])
else:
betweens.append((nums[i] + nums[i-1])/2)
Ausgabe wird, wie gewünscht, die keine weitere Umwandlung benötigt (in Python3.x):
[1, 2.5, 4, 5.5, 6.5, 8]
Was ist dieser' extend' Zweig des bedingten Versuchs zu tun? –
Umm, was ist 'if nums [i] - nums [i-1]> 1:' und 'between.extend (Element für Element im Bereich (nums [i-1], nums [i])' für? Nirgendwo in Die Frage hat das OP gesagt, dass Zahlen mit einem Unterschied von mehr als 1 anders behandelt werden sollten. –
@Rawing Um mehrere Zahlen dazwischen zu behandeln. –
obligatorische itertools
Lösung:
>>> import itertools
>>> values = [0,2,3,5,6,7,9]
>>> [(a+b)/2.0 for a,b in itertools.izip(values, itertools.islice(values, 1, None))]
[1.0, 2.5, 4.0, 5.5, 6.5, 8.0]
Verwenden Sie eine for-Schleife:
>>> a = [0,2,3,5,6,7,9]
>>> [(a[x] + a[x + 1])/2 for x in range(len(a)-1)]
[1.0, 2.5, 4.0, 5.5, 6.5, 8.0]
jedoch zip mit als @Chris_Rands sagte besser ... (und besser lesbar ¬¬)
- 1. Übereinstimmung zwischen den Werten der Liste
- 2. Linq: Liste der double-Werte - Unterschiede zwischen den Nachfolgewerte
- 3. Liste der Funktionen auf die Liste der Werte anwenden
- 4. Python-Lookup-Liste der Werte in der Liste der Wörterbücher
- 5. Pandas: Liste der Werte aus der Liste der Spalten ersetzen
- 6. Python: Entferne alle Werte aus einer Liste zwischen zwei Werten
- 7. Python - Konvertieren von String-Werten der Liste in Float-Werte
- 8. C# Liste der Artikel mit mehreren Werten
- 9. Zugriff auf Werte der Liste in der Liste - Python
- 10. Element an eine Liste anhängen, die auf den Werten der verschachtelten Liste basiert
- 11. Get Liste der Werte in Typ
- 12. konvertieren Sage Liste der Liste der Liste zu R Liste der Liste der Liste
- 13. Excel zum Zurückgeben einer Liste Werte in der Dropdown-Liste
- 14. Liste der Enum-Werte in Java
- 15. Liste der Werte für eine Audiodatei
- 16. Extrahieren von Werten aus Liste der Liste in Datenrahmen
- 17. So erhalten Sie eindeutige Werte in der Liste
- 18. Wie reduziere ich den Inhalt einer Liste basierend auf den Werten der anderen Liste?
- 19. hinzufügen Werte Dropdown-Liste in der Zelle
- 20. finden Sie den Bereich für die Liste der Werte - 'zwischen' Operator in sql
- 21. Mysql SELECT aus der Liste der Werte
- 22. Liste der Dateien erhalten Curl
- 23. Steuerbereich zwischen der Inline-Liste
- 24. Ersetzen Sie Werte in der Liste der Listen
- 25. Liste der Werte für das Wörterbuch
- 26. Worksheet_Change Werte mit der Liste vergleichen
- 27. Eine Liste der Monate zwischen zwei Daten erhalten
- 28. Erhalten Sie Werte aus der Liste MongoDB java
- 29. Der Versuch, eine Liste von Werten an geraden Positionen in der aktuellen Liste zurückzugeben
- 30. Liste der Einzelteile mit gleichen Werten
Sie die Schritte in Array 'a [:: 2] verwenden können, ' – T4rk1n