Python将数组增量的值附加到列表中

时间:2015-10-19 21:06:33

标签: python

假设我有一份清单清单:

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']

2 个答案:

答案 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_listi来从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] )