首页 > 解决方案 > 为什么我的列表中没有正确数量的对象?

问题描述

我正在尝试创建一个函数来生成元组列表。我有这个:

import random

def generate_list(count):
    l_names = ['scott', 'anderson', 'philips', 'peterson', 'parker']
    f_names = ['james', 'chris', 'lisa', 'mary', 'kate']
    names = []
    counter = 0

    for name in f_names:
        counter += 1
        my_tuple = (counter, f_names[random.randint(0, len(f_names)-1)], \
            l_names[random.randint(0, len(l_names)-1)])
        names.append(my_tuple) 
    return my_tuple

people = generate_list(3)
print(f"People list: {people}")

当我使用 generate_list(3) 时,我希望列表中有三个元组。但我只得到一个。我觉得错误出在 for 循环及其 return 语句中的某个地方。但我无法弄清楚。

任何人都可以帮忙吗?

谢谢

标签: pythonfunctionfor-loop

解决方案


更改for name in f_namesfor name in range(count)return mytuplereturn names因为您返回的是一个元组而不是名称列表。

import random

def generate_list(count):
    l_names = ['scott', 'anderson', 'philips', 'peterson', 'parker']
    f_names = ['james', 'chris', 'lisa', 'mary', 'kate']
    names = []
    counter = 0

    for name in range(count):  #change f_names to count
        counter += 1
        my_tuple = (counter, random.choice(f_names), \
            random.choice(l_names))
        names.append(my_tuple) 
    return names #return names not my_tuples

people = generate_list(3)
print(f"People list: {people}")

推荐阅读