我正在尝试使用for循环创建以下语法:
file_1_0 = data[0][0]
file_1_1 = data[0][1]
file_1_2 = data[0][2]
file_1_3 = data[0][3]
file_1_4 = data[0][4]
file_1_2 = "{:,}".format(file_1_2)
file_2_0 = data[1][0]
file_2_1 = data[1][1]
file_2_2 = data[1][2]
file_2_3 = data[1][3]
file_2_4 = data[1][4]
file_2_2 = "{:,}".format(file_2_2)
下面给出的是我试图实现上述效果的for循环:
for i in range(1, len(file_data)):
for k in range(0, len(file_data) - 1):
for j in range(0, 4):
str(file_) + str(i) + str(_) + str(j) = str(locals()["data_" + str(k) + "_" + str(j)])
我遇到错误
SyntaxError: can't assign to operator
答案 0 :(得分:0)
您不能分配给表达式def get_queryset(self):
filter1 = self.request.GET.get('filter1 ', '')
filter2__startswith = self.request.GET.get('filter2_prefix ', '')
def filters_to_Qs(filters):
return [Q(**{k: v}) for k, v in filters.items() if v]
filters = {'filter1': filter1 ,
'filter2__startswith': filter2__startswith }
return Order.objects.filter(*filters_to_Qs(filters))
-这只是四个字符串的串联。
与PHP和其他一些语言不同,Python无法将字符串表达式转换为变量名。如果确实需要,则可以生成代码,然后使用str(file_) + str(i) + str(_) + str(j)
来运行它(Python等效于exec()
,而Python中的eval()
仅计算一个表达式而不是多个语句) 。但是,您可能知道,没有一个需要eval()
的解决方案是一个好主意。
一种更好的解决方案是使用字典键而不是变量:
eval()