2017-09-13 1 views
-1

In der listRange Teil, wenn ich [(range(1, num +1)] anstelle von list(range(1, num+1)) verwenden, funktioniert das Programm nicht warum?Unterschied zwischen [] und Liste führt nicht das Programm

num = int(input("Please choose a number to divide: ")) 

listRange = list(range(1,num+1)) 

divisorList = [] 

for number in listRange: 
    if num % number == 0: 
     divisorList.append(number) 

print(divisorList) 
+3

Haben Sie den interaktiven Modus versucht, und versuchen z.B. '[Bereich (1, 5)]'? Was bekommst du? Wie unterscheidet es sich von "Liste (Bereich (1, 5))"? –

+3

Mögliches Duplikat von [MeineListe = Liste() vs MeineListe = \ [\] in Python] (https://StackOverflow.com/Questions/11780357/mylist-list-vs-mylist-in-python) – Sayse

+0

^Siehe doppelte Antwort - "Die integrierte Liste() ist nützlich, um einige andere iterierbare in eine Liste zu konvertieren" – Sayse

Antwort

1

In Python 3 gibt range() ein Bereichsobjekt zurück.

Mit der Liste (...) konvertieren Sie das Bereichsobjekt (das iterierbar ist) in eine Liste. Mit [] umschließen Sie das Bereichsobjekt in einer Liste, ohne den Inhalt zu iterieren.

print([(range(1))]) # [range(0, 1)] 
print(list(range(1))) # [0] 
+0

Vielen Dank ... Ich bin heute beigetreten und ihr habt innerhalb einer Minute geantwortet ... das ist so cool. – Gaurav

0

als zusätzliche Option, die Sie das Bereichsobjekt mit dem Stern/Stern ‚auspacken‘ kann (manche nennen es „Klecks“) Operator

[*range(7)] 
Out[213]: [0, 1, 2, 3, 4, 5, 6] 
Verwandte Themen