芝麻开门平衡
Counterbalancing in open sesame
我正在芝麻开门写inline_script(python)。
谁能告诉我这里出了什么问题? (我觉得很简单,就是找不到)
当我将数字放入 List = [1,2,3,4,5,6,7] 时,第一行有效,但第二行无效 :(
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
在 python 2.x 中,您可以执行以下操作:
BalanceList1 = range(1,6) + range(13,19)
这将生成 2 个列表并将它们加在一起 BalanceList1
:
[1, 2, 3, 4, 5, 13, 14, 15, 16, 17, 18]
在 python 3.x 中,range
不再是 return 一个 list
,而是一个迭代器(并且 xrange
消失了) ,您必须显式转换为 list
:
BalanceList1 = list(range(1,6))+list(range(13,19))
避免创建过多临时列表的最佳方法是:
BalanceList1 = list(range(1,6))
BalanceList1.extend(range(13,19)) # avoids creating the list for 13->18
优于:
我正在芝麻开门写inline_script(python)。 谁能告诉我这里出了什么问题? (我觉得很简单,就是找不到)
当我将数字放入 List = [1,2,3,4,5,6,7] 时,第一行有效,但第二行无效 :(
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
在 python 2.x 中,您可以执行以下操作:
BalanceList1 = range(1,6) + range(13,19)
这将生成 2 个列表并将它们加在一起 BalanceList1
:
[1, 2, 3, 4, 5, 13, 14, 15, 16, 17, 18]
在 python 3.x 中,range
不再是 return 一个 list
,而是一个迭代器(并且 xrange
消失了) ,您必须显式转换为 list
:
BalanceList1 = list(range(1,6))+list(range(13,19))
避免创建过多临时列表的最佳方法是:
BalanceList1 = list(range(1,6))
BalanceList1.extend(range(13,19)) # avoids creating the list for 13->18
优于: