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

时间:2012-03-16 00:39:24

标签: python list random imaplib

我(不断)使用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的精彩人士提供的任何反馈:)

1 个答案:

答案 0 :(得分:1)

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

print random.choice(msg_ids[0])

要调试此类内容,您可以尝试打印random_id,或使用IPython来交互代码以找出问题。