Python中的循环“for”

2024-06-16 11:56:34 发布

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

我必须使用两个不同的列表创建三个新的项目列表。在

list_one = ['one', 'two','three', 'four','five']
list_two = ['blue', 'green', 'white']

所以,len(list_one) != len(list_two)

现在我应该创建一个算法(一个循环),它可以做到: [oneblue, twoblue, threeblue, fourblue, fiveblue]。“绿色”和“白色”也是一样的。在

我不认为我应该创造三个周期,但我不知道怎么做。 我试过做一个这样的函数,但是不起作用。在

^{pr2}$

我做错什么了?在


Tags: 项目算法列表lengreenblueonelist
3条回答

你应该这么做

def cycle(list_one,list_two):
   newList = []
   for el1 in list_two:
      for el2 in list_one:
         newList.append(el2+el1)
   return newList

您的代码存在一些问题:

  1. 执行for循环for i in ...:时,不需要初始化ii = 0),也不应增加它(i = i + 1),因为Python知道i将采用for循环定义中指定的所有值。

  2. {6}如果你的代码中的缩进是非常重要的。一旦函数遇到return语句,函数将退出并返回指定的内容:在本例中,是一个字符串。

  3. new_list不是一个列表,而是一个字符串。

  4. 在Python中,可以直接在列表项上循环,而不是索引(for item in list_one:,而不是for i in range(len(list_one)):

以下是已清理的代码:

def mix():
    new_list = []
    for i in list_one:
        new_list.append(list_one[i]+list_two[0])
    return new_list

可以使用列表理解重写:

^{pr2}$

而且由于list_two有多个项,因此您还需要迭代list_two

^{3}$

我想你可能在找itertools.product

>>> [b + a for a,b in itertools.product(list_two, list_one)]
['oneblue',
 'twoblue',
 'threeblue',
 'fourblue',
 'fiveblue',
 'onegreen',
 'twogreen',
 'threegreen',
 'fourgreen',
 'fivegreen',
 'onewhite',
 'twowhite',
 'threewhite',
 'fourwhite',
 'fivewhite']

相关问题 更多 >