сравнивая списки и выделяя ключевые элементы - PullRequest
0 голосов
/ 14 января 2019
from colorama import Fore, init
init()

key_numbers = [1,3,5,7,9]
numbers  = [3,4,6,3,8,9,7,9,3,1]

for number in numbers:
       if number in key_numbers: 
           number1 = Fore.RED + number 
           numbers = [number1 if number else number for number in numbers] 
      else:
          continue 

По сути, я хочу, чтобы код просматривал каждое число в списке numbers и проверял, существует ли соответствующий номер в списке key_numbers.

Если он существует, я хочу заменить номер красным шрифтом и перейти к следующему номеру

Вывод должен иметь список с номерами, выделенными красным цветом, если они существуют в списке key_numbers, а остальные номера - обычным шрифтом и цветом.

Я думаю, что я ошибаюсь, пытаясь заменить числа на number1. Может кто-нибудь помочь мне, где я иду не так?

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Приведенный ниже код возьмет два ваших списка и напечатает цветной вывод, выделив те элементы списка из numbers, которые также являются частью number_keys. Дайте мне знать, если вы этого хотели достичь!

#!/usr/bin/python3
from colorama import init, Fore, Style

# init colorama
init()

def highlight(numbers, keys):
    """
    check if numbers exists in keys and
    print + highlight them in red.
    """
    for number in numbers:
        if number in keys:
            print(Fore.RED + str(number) + Style.RESET_ALL, end=" ")
        else:
            print(number, end=" ")
    print()  # print another "\n"

# define numbers and keys
key_numbers = [1, 3, 5, 7, 9]
numbers  = [3,4,6,3,8,9,7,9,3,1]

print("numbers to highlight: {}".format(key_numbers))

# call highlight()
highlight(numbers, key_numbers)
0 голосов
/ 14 января 2019

Вы можете проверить map оператор:

items = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, items))

Вам не нужно указывать лямбду. Вы также можете явно определить функцию, которая возвращает красное число, если оно находится в ключах, а в противном случае - черное.

1009 * Е.Г. *

from colorama import Fore, init
init()

key_numbers = [1,3,5,7,9]
numbers  = [3,4,6,3,8,9,7,9,3,1]

def highlight(number):
    if number in key_numbers:
        return Fore.RED + str(number)
    else:
        return str(number)

colored_numbers = list(map(highlight, numbers))
...