使用列表的字符串格式在python中不起作用

时间:2018-06-08 23:50:24

标签: python list range

我想使用字符串格式而不是这种凌乱的方式

data=(1, 8)
a=((list(range((data[0]), ((data[-1])+1)))))
print (a)

但是当我尝试使用字符串格式时出现语法错误

data=(1, 8)
a=((list(range(%f,%f))) % data)
print(a)

我尝试过%s代替%f

data=(1, 8)
a=((list(range(%s,%s))) % data)
print(a)

2 个答案:

答案 0 :(得分:0)

{ "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(Edm.String)", "value": [ "d4eec69a-98fe-4d83-865e-29769172948b", "4a2e47ce-d135-4078-ac50-7d5520f17317" ] } 是你能得到的最好的。此表达式的值是范围,而不是列表。如果您打算在循环,列表理解等中进一步使用它,请保持原样。如果您确实需要列表(可能不需要),请将范围转换为列表:range(data[0], data[-1] + 1)

你的另一个选择是list(range(data[0], data[-1] + 1)),但它更糟糕。

答案 1 :(得分:0)

在这个精确演员阵容中,您实际上只需拨打ValueError: Input dimension mis-match. (input[0].shape[0] = 71, input[1].shape[0] = 20000) 即可获得所需内容。另外,你过度使用了你的括号。第一个陈述可以简化为:

list(data)

或者,从技术上讲,就是这样:

a = list(range(data[0], data[-1]+1)

现在,如果你真的想要生成存储在元组中的两个值之间的范围,你也可以使用

a = list(data)

a = range(*data) 前缀在迭代中解包数据。你可以用这种方式存储参数。例如:

*

相同
args = (6, 2)
pow(*args)

因此,在您确切的情况下,args = (6, 2) pow(args[0], args[1]) 会生成a = range(*data)。不是你想要的,但可能有用。