为什么我不能从列表中打印一个元组?

时间:2018-11-23 18:02:07

标签: python

我只是想翻转并打印列表中的第一个元组。 如果我尝试此代码,则会收到错误消息“无法解压缩不可迭代的int对象”

lst = [('a',1),('b',2),('c',3)]
for x,y in lst[0]:
    print(y,x)

但是,如果我进行此简单的编辑,则效果很好。为什么我不能从列表中打印单个元组?

lst = [('a',1),('b',2),('c',3)]
for x,y in lst[:1]:
    print(y,x)

4 个答案:

答案 0 :(得分:4)

您的列表:

lst = [('a',1),('b',2),('c',3)]

列表的第一个元素:

>>> lst[0]
(1, 'a')

然后,当您对此进行迭代时,您要求解压缩每个元素。就像写作

for x, y in 1:
    # do something
for x, y in 'a':
    # do something

lst[:1]处,您正在切片该列表,并返回一个元组列表。

答案 1 :(得分:3)

翻转第一个元素的最简单方法是:

lst = [('a',1),('b',2),('c',3)]
print((lst[0][1], lst[0][0])) # -> (1, 'a')

这里的代码引发错误的原因是因为您尝试遍历元素而不是列表,其中元素是('a',1),通过遍历它的第一个值是'a',然后尝试将其拆分为2个变量xy会引发错误。

print(type(lst[0])) # -> <class 'tuple'>
for x,y in lst[0]:
    print(y,x)

在这里,如果我们遍历列表[('a',1)](因为我们使用slice作为列表索引而不是整数),则第一个值确实为('a',1),我们可以将其拆分为x和{{1 }}没有错误的变量。

y

答案 2 :(得分:1)

您正试图遍历列表的第一个元素。 只需解压缩第一个元素并打印:

x, y = lst[0]
print(y,x)

或循环:

for x, y in lst:
    print(y, x)

答案 3 :(得分:0)

您不想在那里循环。 .crt-post-max-height-read-more是您要翻转的元组,无需进行迭代。

var crtPosts = document.querySelectorAll('.crt-post-c'),
    crtPostsReadMore = document.querySelectorAll('.crt-post-max-height-read-more');

for(var i = crtPosts.length; i--;)
{
    crtPosts[i].style.maxHeight = '800px';
    crtPosts[i].style.minHeight = '400px';
}
for(var i = crtPostsReadMore.length; i--;)
    crtPostsReadMore[i].style.display = 'none';