我只是想翻转并打印列表中的第一个元组。 如果我尝试此代码,则会收到错误消息“无法解压缩不可迭代的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)
答案 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个变量x
和y
会引发错误。
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';