循环"为"在Python中

时间:2016-09-21 18:26:43

标签: python

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

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

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

现在我应该创建一个可以执行此操作的算法(循环): [oneblue, twoblue, threeblue, fourblue, fiveblue]。同样适用于'绿色'和'白色'。

我认为我应该创造三个周期,但我不知道如何。 我试图制作这样的功能,但它不起作用。

def mix():
    i = 0
    for i in range(len(list_one)):
        new_list = list_one[i]+list_two[0]
        i = i+1
        return new_list

我做错了什么?

4 个答案:

答案 0 :(得分:2)

我想你可能在寻找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']

答案 1 :(得分:0)

  • 返回应该是for循环。
  • 无需初始化i并增加它,因为您使用的是范围。
  • 此外,由于两个列表都可以是可变长度,因此不要使用范围。直接迭代列表元素。
  • def mix():应该与def mix(l_one,l_two):
  • 类似

以上所有代码:

def mix(l_one,l_two):
    new_list = []
    for x in l_one:
        for y in l_two:
            new_list.append(x+y)
    return new_list

list_one = ['one', 'two','three', 'four','five']
list_two = ['blue', 'green', 'white']
n_list = mix(list_one,list_two)
print n_list

<强>输出:

C:\Users\dinesh_pundkar\Desktop>python c.py
['oneblue', 'onegreen', 'onewhite', 'twoblue', 'twogreen', 'twowhite', 'threeblu
e', 'threegreen', 'threewhite', 'fourblue', 'fourgreen', 'fourwhite', 'fiveblue'
, 'fivegreen', 'fivewhite']

C:\Users\dinesh_pundkar\Desktop>

使用列表理解,mix()函数如下所示:

   def mix(l_one,l_two):
          new_list =[x+y for x in l_one for y in l_two]
          return new_list

答案 2 :(得分:0)

你应该这样做

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

答案 3 :(得分:0)

您的代码存在一些问题:

  1. 执行for循环i时,您无需初始化i = 0i = i + 1),因此您不应将其递增(i) Python知道return将获取for循环定义中指定的所有值。

  2. 如果你的代码缩进(缩进在Python中非常重要)真的是上面写的那个,你的new_list语句就在for循环中。一旦你的函数遇到你的return语句,你的函数将退出并返回你指定的内容:在这种情况下,是一个字符串。

  3. for item in list_one:不是列表而是字符串。

  4. 在Python中,您可以直接遍历列表项而不是索引(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

  5. 这是您清理的代码:

    def mix(list_one, list_two):
        return [item+list_two[0] for item in list_one]
    

    这可以使用列表理解来重写:

    list_two

    由于list_two有多个项目,您还需要迭代def mix(list_one, list_two): return [item+item2 for item in list_one for item2 in list_two]

    {{1}}