为什么我的列表会因为Python中的print语句而发生变化?

2024-05-17 11:36:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个CodeAcademy活动,我将两个列表压缩在一起。我会得到不同的打印结果,这取决于它们的放置顺序

names = ["Mohamed", "Sara", "Xia", "Paul", "Valentina", "Jide", "Aaron", "Emily", "Nikita", "Paul"]
insurance_costs = [13262.0, 4816.0, 6839.0, 5054.0, 14724.0, 5360.0, 7640.0, 6072.0, 2750.0, 12064.0]

medical_records = zip(insurance_costs, names)

print (list(medical_records))

num_medical_records = len(list(medical_records))

print(num_medical_records)

当我打印时,我得到了预期的列表,但是num_medical_records是0?如果我切换打印语句的顺序,结果是一个空列表,但打印num_medical_records会给出正确的数字“11”

medical_records = zip(insurance_costs, names)

num_medical_records = len(list(medical_records))

print (list(medical_records))

print(num_medical_records)

为什么医疗记录会发生变异?非常感谢您的洞察力


Tags: 列表lennames顺序zipnumlistmedical
3条回答

我相信zip返回一个迭代器。调用list(medical_records)时,将耗尽迭代器。这就是调用len(list(medical_records))没有结果的原因,因为没有任何结果

资料来源:https://docs.python.org/3.3/library/functions.html#zip

您应该首先将zip(insurance_costs, names)保存到列表中,例如

zipped_list = list(zip(insurance_costs, names))

然后对存储列表的zipped_list变量执行其他操作。zip只创建迭代器,在其上运行的第一个函数将耗尽迭代器

zip函数只能迭代一次

您可以这样做:

names = ["Mohamed", "Sara", "Xia", "Paul", "Valentina", "Jide", "Aaron", "Emily", "Nikita", "Paul"]
insurance_costs = [13262.0, 4816.0, 6839.0, 5054.0, 14724.0, 5360.0, 7640.0, 6072.0, 2750.0, 12064.0]

medical_records = list(zip(insurance_costs, names))

print (medical_records)

num_medical_records = len(medical_records)

print(num_medical_records)

相关问题 更多 >