【发布时间】:2016-09-05 11:12:30
【问题描述】:
根据条件,我需要从一个或另一个函数中获取值。我试图把它放在一个简单的If ... Else 语句中。我尝试使用%s 字符串格式,但它不起作用。下面的代码,所以我想做什么会变得更清楚:
if condition:
item = my_list['%s']
else:
item = my_other_list['%s']
# now I do something with this value:
print item % 3
如果condition 为真或假,我尝试print 一个或其他列表的第三个值。这返回了一个关于列表索引是字符串的错误。所以我试着把它放在int() 里面没有帮助。
我该怎么做?问题是我得到值 晚 比我声明 item 是什么。
编辑 我将在这里添加更多信息:
我有一个for 循环,它遍历约 1000 个元素并处理它们。如果condition 是True,它会调用一个或另一个函数(如果为假)。现在,我不想检查相同的条件 1000 次,因为我知道它在这段时间内不会改变,并且想检查一次并将该方法应用于所有元素。
更多代码:
if self.dlg.comboBox_3.currentIndex == 0:
item = QCustomTableWidgetItem(str(round((sum(values['%s'])/len(values['%s'])),2)))
else:
item = QCustomTableWidgetItem(str(round(sum(values['%s'],2))))
for row in range(len(groups)):
group = QTableWidgetItem(str(groups[row]))
qTable.setItem(row,0,group)
qTable.setItem(row,1,item % row)
这是实际代码。不是'%s' 和“% 行”。我之前使用简化不是为了分散实际问题的注意力,但我认为它是必要的。如果这不是一个好的决定,我很抱歉。
【问题讨论】:
-
列表需要整数索引;第一个元素始终为 0。例如,如果您想访问列表的第三个元素,您可以使用
my_list[2]执行此操作。因此,除非%s是整数,否则您没有正确使用这些列表。跨度> -
我不太理解这条评论 - 索引肯定是一个整数(示例中为“3”),但
'%s'是一个字符串。我希望这个 '%s' 字符串的性质将使索引成为整数,因为稍后将传递 int = 3。 -
试着让你的代码更明确。您肯定不希望
print item %3影响之前确定的if...else语句的结果吗? -
我仍然不知道
%s来自哪里?它是(应该是)一个列表索引。 -
好吧,我知道这行不通-我的问题是关于如何以正确的方式影响
if。不过可能完全不同。