首页 > 解决方案 > 如何将列表元素中的参数提供给类?

问题描述

我正在尝试将几个列表中的参数提供给一个类。我试过这些:

for i in range(len(myList)): # or just myList
    myList.append(MyClass(names[i], cities[i], ages[i], problems[i]))

或者

for i in range(len(myList)):

    name = names[i]
    city = cities[i]
    age = ages[i]
    problem = problems[i]

    myList.append(MyClass(name, city, age, problem))

但它不起作用,当我打印 myList 时没有错误,它只是空的。我可能在做一个错误的逻辑,但我无法弄清楚。

标签: python

解决方案


你可以zip列出清单。

result = []
for data in zip(names, cities, ages, problems):
    name = data[0]
    city = data[1]
    age = data[2]
    problem = data[3]
    result.append(MyClass(name, city, age, problem))

让我们通过这种方法使用元组解包。

result = []
for name, city, age, problem in zip(names, cities, ages, problems):
    result.append(MyClass(name, city, age, problem))

所有这些都可以使用列表推导式写在一行中。

result = [MyClass(name, city, age, problem) for name, city, age, problem in zip(names, cities, ages, problems)]

或者让 Python 为你做元组解包

result = [MyClass(*data) for data in zip(names, cities, ages, problems)]

推荐阅读