在python中使用一个项目迭代列表的正确方法是什么?

时间:2017-03-29 18:49:23

标签: python

我有一个只有一个项目的列表。我知道这个列表只有一个项目,因为它是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会引发一个红旗,但如果我确信我的列表总是有一个项目,那么可以安全地忽略它吗?

4 个答案:

答案 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}}