Python 3.x 两个列表的公共部分 每次新建时都会生成列表_1 列表2是不可更改的

Python 3.x 两个列表的公共部分 每次新建时都会生成列表_1 列表2是不可更改的,python-3.x,tkinter,Python 3.x,Tkinter,在窗口中,列表_1以默认黑色打印,如果它们出现在列表_2中,我希望生成红色数字 import tkinter as tk from tkinter import Label from random import randint list_1 = [randint(1, 100) for i in range(12)] list_2 = [2, 5, 8, 9, 14, 26, 28, 34, 43, 51, 55, 60, 77] root = tk.Tk() label = tk.Lab

在窗口中,列表_1以默认黑色打印,如果它们出现在列表_2中,我希望生成红色数字

import tkinter as tk
from tkinter import Label
from random import randint

list_1 = [randint(1, 100) for i in range(12)]
list_2 = [2, 5, 8, 9, 14, 26, 28, 34, 43, 51, 55, 60, 77]

root = tk.Tk()

label = tk.Label(root, text=list_1, padx=15, pady=15)
label.pack()

root.mainloop()
我试过这样做:

if list_2 in list_1:
    label.config(fg='red')
或者这个:

for i in list_2:
    for i in list_1:
        label.config(fg='red')

但什么都不管用。错误在哪里?

要检查列表中的常用哈希项,您可能需要使用集合:

if set(list_2) & set(list_1):
    label.config(fg='red')

您还可以使用
任意
和生成器表达式:

if any(n in list_2 for n in list_1):
    label.config(fg='red')

但是它的速度较慢且不太像python。

如果其他列表中有任何数字,是否希望整个标签为红色?尝试了您的建议,但这不是我需要的,因为此代码将所有数字都更改为红色。我想要这样的东西:黑色(不在列表2中)红色(在列表2中)。列表_1=黑色(3)、黑色(7)、红色(14)、黑色(15)、红色(26)、红色(28)、黑色(31)希望您理解我的意思要做什么您需要将黑色和红色分为两个标签,为每个数字创建一个标签,或将颜色嵌入标签内容。我建议分组可能是最简单的(并且使用两个标签)。我想我知道我到底在哪里犯了错误。标签小部件只能有一种前景色。这就是为什么上面的代码把所有数字都涂上了颜色。在这种情况下,我应该改为文本小部件
if any(n in list_2 for n in list_1):
    label.config(fg='red')