Píšem inline_script v otvorenom sezame (python). Môže mi niekto povedať, čo je tu zlé (myslím, že je to niečo veľmi jednoduché, ale nemôžem ho nájsť)
BalanceList1 = range(1:7) + range(13:19) #does not work
if self.get("subject_nr") == "BalanceList1":
#here follows a list of commands
BalanceList2 = list(range(7:13))+list(range(19:25)) #does not work either
elif self.get("subject_nr") == "BalanceList2":
#other commands
odpovede:
1 pre odpoveď č. 1V pythone 2.x môžete urobiť nasledovné:
BalanceList1 = range(1,6) + range(13,19)
ktorý vytvorí 2 zoznamy a pridá ich spolu BalanceList1
:
[1, 2, 3, 4, 5, 13, 14, 15, 16, 17, 18]
V pythone 3.x, range
nevráti a list
už ale iterátor (a xrange
je preč), musíte explicitne previesť na list
:
BalanceList1 = list(range(1,6))+list(range(13,19))
Optimálnejším spôsobom, ako zabrániť vytvoreniu príliš veľa dočasných zoznamov, by bolo:
BalanceList1 = list(range(1,6))
BalanceList1.extend(range(13,19)) # avoids creating the list for 13->18
optimálnejšie ako: