Random.choice拉出整个列表,而不是单个项目

问题描述 投票:0回答:1

我(不断)使用gmail和imaplib开发项目。我正在搜索gmail以查找包含特定单词的电子邮件,并收到一个唯一ID列表(我的大部分代码都是基于Doug Hellman的,来自他出色的imaplib tutorial)。这些唯一ID将保存到列表中。我试图从列表中提取一个id,但random.choice不断拉动整个列表。这是代码:

import imaplib
import random
from imaplib_list_parse import parse_list_response

c = imaplib_connect.open_connection()
msg_ids = []
c.select('[Gmail]/Chats', readonly=True)
typ, msg_ids = c.search(None, '(BODY "friend")')
random_id = random.choice(msg_ids)
print random_id

我在解释器中搞砸了,msg_ids绝对是一个列表。我也试图拉出数组的特定元素(例如:msg_ids [1]等),但它说“IndexError:list index out of range”我理解为“你要找的东西不在那里” ,这是令人困惑的,因为它在那里。

有没有列表不是列表?或者其他的东西?我糊涂了。

一如既往,我感谢stackoverflow的精彩人士给予的任何反馈:)

python list random imaplib
1个回答
1
投票

我认为random_id是一个列表列表,例如:[[1,2,3,5]].So当你调用msg_ids[1]时,它会提升IndexError。由于列表中只有一个元素,random.choice()总是返回元素。你可以试试:

print random.choice(msg_ids[0])

要调试这类事情,您可以尝试打印random_id,或使用IPython来交互代码以找出问题所在。

© www.soinside.com 2019 - 2024. All rights reserved.