Python:遍历listone,遍历listtwo,并将listtwo中的项目应用到listone

Python:遍历listone,遍历listtwo,并将listtwo中的项目应用到listone,python,list,colors,rgb,enumerate,Python,List,Colors,Rgb,Enumerate,我试图将列表二中的颜色代码项(实际上是三个列表,每种颜色一个,r,g,b)应用到另一个单词列表中……问题是单词比颜色多。一旦结束,如何重新启动色码 这是我的代码和迄今为止的尝试 词表 listone = ["Apple","Toyota","Civic","Merc","Toshiba","Samsung","Dell","Turbo"] 颜色表 r = [135,147,196,211] g = [193,208,229,117] b = [196,35,135,3] zippedrgb

我试图将列表二中的颜色代码项(实际上是三个列表,每种颜色一个,r,g,b)应用到另一个单词列表中……问题是单词比颜色多。一旦结束,如何重新启动色码

这是我的代码和迄今为止的尝试

词表

listone = ["Apple","Toyota","Civic","Merc","Toshiba","Samsung","Dell","Turbo"]
颜色表

r = [135,147,196,211]
g = [193,208,229,117]
b = [196,35,135,3] 

zippedrgb = zip(r,g,b)

for i, word in enumerate(listone):
    p=0
    y=0
    for x, colour in enumerate(zippedrgb):
        Shape.TextFrame.TextRange.Characters(res[p], charlen[y]).Font.Color = RGB(r[x],g[x],b[x])
        p+=1
        y+=1
运行此代码时会发生什么情况:

从单词列表(listone)中,只有前四个单词接受颜色,其余单词没有任何变化

我希望我的代码会执行以下操作

word[1] = RGB(135,193,196)
word[2] = RGB(147,208,35)
word[3] = RGB(196,229,135)
word[4] = RGB(211,117,35)
word[5] = RGB(135,193,196)
word[6] = RGB(147,208,35)
word[7] = RGB(196,229,135)
and so on untill the words finished
正如你所看到的,我希望颜色从开始到结束,直到文字结束……

我做错了什么

谢谢

from itertools import cycle
list1 = ["Apple","Toyota","Civic","Merc","Toshiba","Samsung","Dell","Turbo"]
list2 = ["Blue","Red"]
print zip(list1,cycle(list2))
或者稍微老式一点

items = []
for i in range(len(list1)):
    items.append((list1[i],list2[i%len(list2)]))
print items
或者稍微老式一点

items = []
for i in range(len(list1)):
    items.append((list1[i],list2[i%len(list2)]))
print items
一旦结束,如何重新启动色码

itertools.循环
至救援:

import itertools

r = [135,147,196,211]
g = [193,208,229,117]
b = [196,35,135,3] 
listone = ["Apple","Toyota","Civic","Merc","Toshiba","Samsung","Dell","Turbo"]
colours = zip(r,g,b)

colours_and_names = zip(listone,itertools.cycle(colours))
#=>  [('Apple', (135, 193, 196)), ('Toyota', (147, 208, 35)), ('Civic', (196, 229, 135)), ('Merc', (211, 117, 3)), ('Toshiba', (135, 193, 196)), ('Samsung', (147, 208, 35)), ('Dell', (196, 229, 135)), ('Turbo', (211, 117, 3))]
现在,让我们稍微修改一下您的代码:

for (i, (word,colour)) in enumerate(colours_and_names):
    Shape.TextFrame.TextRange.Characters(res[i], charlen[i]).Font.Color = RGB(*colour)
您可以看到,通过序列赋值,您可以通过压缩结构进行枚举,并将元素捕获到变量中;而
*
(“splat”)运算符允许您将序列解压为函数参数

现在,如果您想要每个颜色的单词,您可以使用产品:

list(itertools.product(listone,colours))
#=> [('Apple', (135, 193, 196)), ('Apple', (147, 208, 35)), ('Apple', (196, 229, 135)), ('Apple', (211, 117, 3)), ('Toyota', (135, 193, 196)), ('Toyota', (147, 208, 35)), ('Toyota', (196, 229, 135)), ('Toyota', (211, 117, 3)), ('Civic', (135, 193, 196)), ('Civic', (147, 208, 35)), ('Civic', (196, 229, 135)), ('Civic', (211, 117, 3)), ('Merc', (135, 193, 196)), ('Merc', (147, 208, 35)), ('Merc', (196, 229, 135)), ('Merc', (211, 117, 3)), ('Toshiba', (135, 193, 196)), ('Toshiba', (147, 208, 35)), ('Toshiba', (196, 229, 135)), ('Toshiba', (211, 117, 3)), ('Samsung', (135, 193, 196)), ('Samsung', (147, 208, 35)), ('Samsung', (196, 229, 135)), ('Samsung', (211, 117, 3)), ('Dell', (135, 193, 196)), ('Dell', (147, 208, 35)), ('Dell', (196, 229, 135)), ('Dell', (211, 117, 3)), ('Turbo', (135, 193, 196)), ('Turbo', (147, 208, 35)), ('Turbo', (196, 229, 135)), ('Turbo', (211, 117, 3))]
一旦结束,如何重新启动色码

itertools.循环
至救援:

import itertools

r = [135,147,196,211]
g = [193,208,229,117]
b = [196,35,135,3] 
listone = ["Apple","Toyota","Civic","Merc","Toshiba","Samsung","Dell","Turbo"]
colours = zip(r,g,b)

colours_and_names = zip(listone,itertools.cycle(colours))
#=>  [('Apple', (135, 193, 196)), ('Toyota', (147, 208, 35)), ('Civic', (196, 229, 135)), ('Merc', (211, 117, 3)), ('Toshiba', (135, 193, 196)), ('Samsung', (147, 208, 35)), ('Dell', (196, 229, 135)), ('Turbo', (211, 117, 3))]
现在,让我们稍微修改一下您的代码:

for (i, (word,colour)) in enumerate(colours_and_names):
    Shape.TextFrame.TextRange.Characters(res[i], charlen[i]).Font.Color = RGB(*colour)
您可以看到,通过序列赋值,您可以通过压缩结构进行枚举,并将元素捕获到变量中;而
*
(“splat”)运算符允许您将序列解压为函数参数

现在,如果您想要每个颜色的单词,您可以使用产品:

list(itertools.product(listone,colours))
#=> [('Apple', (135, 193, 196)), ('Apple', (147, 208, 35)), ('Apple', (196, 229, 135)), ('Apple', (211, 117, 3)), ('Toyota', (135, 193, 196)), ('Toyota', (147, 208, 35)), ('Toyota', (196, 229, 135)), ('Toyota', (211, 117, 3)), ('Civic', (135, 193, 196)), ('Civic', (147, 208, 35)), ('Civic', (196, 229, 135)), ('Civic', (211, 117, 3)), ('Merc', (135, 193, 196)), ('Merc', (147, 208, 35)), ('Merc', (196, 229, 135)), ('Merc', (211, 117, 3)), ('Toshiba', (135, 193, 196)), ('Toshiba', (147, 208, 35)), ('Toshiba', (196, 229, 135)), ('Toshiba', (211, 117, 3)), ('Samsung', (135, 193, 196)), ('Samsung', (147, 208, 35)), ('Samsung', (196, 229, 135)), ('Samsung', (211, 117, 3)), ('Dell', (135, 193, 196)), ('Dell', (147, 208, 35)), ('Dell', (196, 229, 135)), ('Dell', (211, 117, 3)), ('Turbo', (135, 193, 196)), ('Turbo', (147, 208, 35)), ('Turbo', (196, 229, 135)), ('Turbo', (211, 117, 3))]

看起来像是itertools的工作!看起来像是itertools的工作!谢谢。这正是我一直在寻找的,感谢您对我的代码的额外帮助!我是python新手,这真的很有帮助@不客气!由于您的代码中缺少
res
charlen
,因此我不能保证固定版本的功能完全相同,但希望这会有所帮助。看起来您正在轻松有效地使用python,祝您好运!刚用你的固定代码测试过,效果非常好。这正是我想要的。再次感谢!谢谢。这正是我一直在寻找的,感谢您对我的代码的额外帮助!我是python新手,这真的很有帮助@不客气!由于您的代码中缺少
res
charlen
,因此我不能保证固定版本的功能完全相同,但希望这会有所帮助。看起来您正在轻松有效地使用python,祝您好运!刚用你的固定代码测试过,效果非常好。这正是我想要的。再次感谢!谢谢Joran的输入,谢谢!谢谢Joran的输入,谢谢!