2017-05-09 10 views
2

Wie würde ich eine While-Schleife erzeugen, um die Zahlen in der folgenden Liste zu verdoppeln und somit zu ändern?While-Schleife, doppelte Zahlen in der Liste

Vielen Dank.

numberList = [3, 5, 6, 2, 1, 5, 7, 4] 

Das ist mein Versuch war

numberList = [3, 5, 6, 2, 1, 5, 7, 4] 

while numberList == numberList: 
    numberList == numberList * 2 
    print (numberList) 
    break 
+0

'während Nummer Liste: print (numberList.pop() * 2)' – inspectorG4dget

+1

Warum fragen Sie für eine while-Schleife? Es gibt _much_ bessere Möglichkeiten, dies in Python zu tun. Zum Beispiel: 'numberList = [x * 2 für x in numberList]' –

+0

@bigbounty Das wird die Länge der Liste verdoppeln, nicht die einzelnen Elemente. –

Antwort

0

Obwohl dies nicht der beste Weg, um das Problem zu lösen, das ist eine Möglichkeit, es zu tun, eine while-Schleife mit:

numberList = [3, 5, 6, 2, 1, 5, 7, 4] 
i=0 
while i < len(numberList): 
    numberList[i] *= 2 
    i += 1 

>>> numberList 
[6, 10, 12, 4, 2, 10, 14, 8] 

Beachten Sie, dass die Multiplikation Eine Liste nach einer Ganzzahl gibt eine Liste aus, in der die Elemente wiederholt werden. Ihr Versuch wird also in etwa folgendermaßen durchgeführt:

>>> [1,2,3]*2 
[1, 2, 3, 1, 2, 3] 
0

Sie können eine Liste mit einer Lambda-Funktion zuordnen, um die gewünschte Funktion auszuführen!

numberList= [3, 5, 6, 2, 1, 5, 7, 4] 
print map(lambda x:x*2,numberList) 
+0

Wissen Sie, warum dies viel schneller zu bewerten scheint als mit '[x * 2 für x in numberList]'? –

+1

werfen Sie einen Blick auf @ninjagecko Antwort [hier] (http://stackoverflow.com/questions/1247486/python-list-comprehension-vs-map). –

Verwandte Themen