假设我有一份清单清单:
name_list = ['John', 'Smith'], ['Sarah', 'Nichols'], ['Alex', 'Johnson']
我有另一个任意列表,让我们说颜色:
color_list = ['Red', 'Green', 'Blue']
在旋转名称中添加给定数量的颜色的最简单或最有效的方法是什么?例如,如果我选择了两种颜色,则返回的列表将如下所示:
output_list = ['John', 'Smith', 'Red'], ['Sarah', 'Nichols', 'Green'], ['Alex', 'Johnson', 'Red']
或者如果我选择3种颜色:
output_list = ['John', 'Smith', 'Red'], ['Sarah', 'Nichols', 'Green'], ['Alex', 'Johnson', 'Blue']
答案 0 :(得分:4)
您可以itertools.cycle
列表的一部分:
name_list = [['John', 'Smith'], ['Sarah', 'Nichols'], ['Alex', 'Johnson']]
color_list = ['Red', 'Green', 'Blue']
from itertools import cycle, islice
i = 2
cyc = cycle(islice(color_list, 0, i))
for sub in name_list:
sub.append(next(cyc))
print(name_list)
输出:
[['John', 'Smith', 'Red'], ['Sarah', 'Nichols', 'Green'], ['Alex', 'Johnson', 'Red']]
我们也可以使用索引来迭代name_list
模i
来从color_list
中提取正确的元素:
name_list = [['John', 'Smith'], ['Sarah', 'Nichols'], ['Alex', 'Johnson'], ['Alex', 'Johnson']]
color_list = ['Red', 'Green', 'Blue']
i = 2
for ind, sub in enumerate(name_list):
sub.append(color_list[ind % i])
print(name_list)
答案 1 :(得分:0)
首先 - 您的列表列表应如下所示:
name_list = [['John', 'Smith'], ['Sarah', 'Nichols'], ['Alex', 'Johnson']]
你错过了括号......
一种简单的方法是使用模运算符...(检查边缘情况,例如颜色列表为空时):
color_len = len(color_list)
for idx,elem in enumerate(name_list):
elem.append( color_list[idx%color_len] )