我有一个只有一个项目的列表。我知道这个列表只有一个项目,因为它是MySQL查询的输出,总是只有一个结果。
MySQL查询:
SELECT MAX(date) FROM db.table;
列出结果:
['20170307']
现在我必须访问此列表中的项目。我有两个选择:
1)按位置
max_date = list[0]
print(max_date)
2)通过迭代项目
for item in list:
max_date = item
print(max_date)
有人可以解释哪种方法在性能,可读性和整体最佳实践方面更合适?当我使用方法#2时,我的IDE会引发一个红旗,但如果我确信我的列表总是有一个项目,那么可以安全地忽略它吗?
答案 0 :(得分:3)
我使用第三个选项,序列解包语法:
max_date, = list
请注意逗号。如果list
实际上不是长度为1的序列,则可以引发异常。
就速度而言,list[0]
几乎肯定会跑得最快。
答案 1 :(得分:0)
理想情况下,使用按位置样式有效,因为您需要的只是列表的第一个元素。只需阅读代码,for循环就会给我一个列表中超过1个元素的印象
答案 2 :(得分:0)
“list”是保留关键字。不要将它用作变量名称,它会导致错误的行为。如果你真的想要安全,你可以这样做:
if len(list1) == 1:
max_item = list1[0]
print(max_item)
答案 3 :(得分:0)
索引访问速度非常快,是大多数语言。您还可以在Python中使用自动解包:
{{1}}