我必须使用两个不同的列表创建三个新的项目列表。
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
我做错了什么?
答案 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)
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)
您的代码存在一些问题:
执行for循环i
时,您无需初始化i = 0
(i = i + 1
),因此您不应将其递增(i
) Python知道return
将获取for循环定义中指定的所有值。
如果你的代码缩进(缩进在Python中非常重要)真的是上面写的那个,你的new_list
语句就在for循环中。一旦你的函数遇到你的return语句,你的函数将退出并返回你指定的内容:在这种情况下,是一个字符串。
for item in list_one:
不是列表而是字符串。
在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
这是您清理的代码:
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}}