首页 > 解决方案 > 遍历单元素元组列表产生的结果与遍历多元素元组不同

问题描述

我有输出元组列表的 sqlite 查询。我遇到了一种情况,我不明白为什么循环遍历单元素元组列表与遍历多元素元组列表相比会产生不同的输出。以以下列表为例:

list1 = [('value1',),('value2',)]
list2 = [('value1', 'value1'), ('value2', 'value2')]

当我遍历第一个查询时:

for item1 in list1:
    print(item1)

我得到以下信息:

('value1',)
('value2',)

而当我遍历第二个查询时:

for item1, item2 in list2:
    print(item1, item2)

我得到以下信息:

value1 value1
value2 value2

那么,为什么在遍历单元素元组与多元素元组列表时输出会有所不同呢?是否有不同的方式来构建循环,这样我就不必以不同的方式处理输出?现在,每当我遍历单元素元组列表时,我都需要像这样构建 print 语句:

for item1 in query1:
    print(item1[0])

我想 Python 在解析列表的方式上以不同的方式处理这两者似乎很奇怪。换句话说,为什么它不像这样输出第二个循环:

('value1', 'value1')
('value2', 'value2')

标签: pythonlistloopssqlitetuples

解决方案


您应该通过解包元组来循环遍历 1 项元组,就像使用 2 项元组一样(注意逗号):

for item1, in list1:
    print(item1)

推荐阅读