2017-11-24 4 views
1

Ich versuche, den folgenden Code auszuführen, aber es gab einen Fehler. Der folgende Code wurde für Python3 mit Spyder ausgeführt.Bitten um nicht unterstützten Operandentyp (en) für +: 'Bereich' und 'Liste'

def create_batches(data_size, batch_size, shuffle=True): 
    """create index by batches.""" 
    batches = [] 
    ids = range(data_size) 
    if shuffle: 
     random.shuffle(ids) 
    for i in range(data_size // batch_size): 
     start = i * batch_size 
     end = (i + 1) * batch_size 
     batches.append(ids[start:end]) 
    # the batch of which the length is less than batch_size 
    rest = data_size % batch_size 
    if rest > 0: 
     batches.append(ids[-rest:] + [-1] * (batch_size - rest)) # -1 as padding 
    return batches 

Die errror war:

TypeError: unsupported operand type(s) for +: 'range' and 'list' 

Wer weiß, wie dieses Problem zu lösen?

+0

Der Fehler, den Sie erhalten, indem Sie diesen Code ausführen, ist: 'TypeError: 'Bereich' Objekt unterstützt keine Artikelzuweisung'. Fragen Sie sich, wo Sie bekommen 'TypeError: nicht unterstützte Operandentyp (en) für +: 'range' und 'list''? –

+0

In Zeile 3: ids = range (data_size) –

+0

Nein, hast du nicht! Sie erhalten einen Fehler in dieser Zeile: 'random.shuffle (ids)' –

Antwort

2

random.shuffle() funktioniert nur auf veränderbare Sequenzen, die in der Regel ein list Objekt ist. range() erzeugt ein unveränderliches Sequenzobjekt, random.shuffle() kann die Werte in einem Bereich nicht verschieben.

umrechnen Bereich zu einer Liste zuerst:

ids = list(range(data_size)) 

In Python 2 verwendeten range() eine Liste von ganzen Zahlen zu erzeugen (vs. xrange(), die unveränderliche Sequenz erzeugt), so dass Sie immer noch Code online finden können, verwendet range() ohne list() vor dem Mischen. Berücksichtigen Sie dies beim Versuch, Online-Codebeispiele an Python 3 anzupassen. Siehe auch NameError: global name 'xrange' is not defined in Python 3

+0

Vielen Dank Herr Martijn Pieters. Jetzt funktioniert es. Ich bin sehr glücklich. : D –

Verwandte Themen