Skip to main content
 首页 » 编程设计

使用来自多个列表的值的 Python 字符串格式

2025年05月04日14wuhuacong

我正在尝试使用来自多个列表的值来格式化字符串。以下是伪代码,但应该给出预期输出的概念。输出将是每个列表中每个项目的组合:每个人都喜欢在做所有爱好时吃所有水果。那么如何在 python 中执行此操作?

应该有 len(names)*len(fruits)*len(hobbies) 可能性(在我的示例中为 64)

names = ['tom','marry','jessica','john'] 
fruits = ['oranges','apples','grapes','bananas'] 
hobbies = ['dancing','sitting','bicycling','watching tv'] 
 
print '%(name)s likes to eat %(fruit)s while %(hobby)s \n' 
       % {'name':names, 'fruit':fruits, 'hobby':hobbies} 

请您参考如下方法:

如果我理解您的“输出将是每个列表中每个项目的组合:每个人在做每个爱好时都喜欢所有水果”行,您需要所有可能的组合。您可以以嵌套循环的方式执行此操作:

names = ['tom','mary','jessica','john'] 
fruits = ['oranges','apples','grapes','bananas'] 
hobbies = ['dancing','sitting','bicycling','watching tv'] 
 
for name in names: 
    for fruit in fruits: 
        for hobby in hobbies: 
            print '%(name)s likes to eat %(fruit)s while %(hobby)s' % {'name':name, 'fruit':fruit, 'hobby':hobby} 

产生

tom likes to eat oranges while dancing 
tom likes to eat oranges while sitting 
tom likes to eat oranges while bicycling 
tom likes to eat oranges while watching tv 
tom likes to eat apples while dancing 
[etc.] 
john likes to eat bananas while bicycling 
john likes to eat bananas while watching tv 

或者您可以使用 itertools 模块,它有一个函数 product,它为您提供输入列表的所有可能组合:

import itertools 
 
for name, fruit, hobby in itertools.product(names, fruits, hobbies): 
    print '%(name)s likes to eat %(fruit)s while %(hobby)s' % {'name':name, 'fruit':fruit, 'hobby':hobby}