1
resposta

[Dúvida] Como melhorar meu IF - Python

Olá, tudo bem?

Escrevi o código abaixo e estou achando que há uma maneira melhor e mais curta de passar os parâmetros do meu IF, mas não consigo fazer de outra forma sem que dê errado.

É necessário que toda vez que a fruta "Abacaxi" seja sorteada junto com as moléculas "Imidacloprid" ou "Thiamethoxam" ou "Acetamiprid" a lista de moléculas capture uma dessas moléculas sorteada.

import numpy as np

Lista_Frutas = []
Lista_Molecula = []

Dados_Frutas = ['Abacaxi', 'Manga', 'Maçã', 'Goiaba', 'Uva', 'Mamão']

Dados_Moleculas = ['Imidacloprid', 'Thiamethoxam', 'Acetamiprid', 'Flupyradifurone', 'Novalurom', 'Carbaryl']


for i in range (3):

    Sort_Fruta = np.random.choice(Dados_Frutas)

    Lista_Frutas.append(Sort_Fruta)


for item in Lista_Frutas:

    Sort_Molecula = np.random.choice(Dados_Moleculas)

    if (item == 'Abacaxi') and ((Sort_Molecula == 'Imidacloprid') or (Sort_Molecula == 'Thiamethoxam') or (Sort_Molecula == 'Acetamiprid') ):

        Lista_Molecula.append(Sort_Molecula)
1 resposta

Oi, colega. Tudo bem? E se tu escrevesse o código com uma list comprehension? Segue abaixo:

import numpy as np

# Dados
Dados_Frutas = ['Abacaxi', 'Manga', 'Maçã', 'Goiaba', 'Uva', 'Mamão']
Dados_Moleculas = ['Imidacloprid', 'Thiamethoxam', 'Acetamiprid', 'Flupyradifurone', 'Novalurom', 'Carbaryl']

# Realizando o sorteio
fruta = np.random.choice(Dados_Frutas)
molecula = np.random.choice(Dados_Moleculas)

# Verificando se a fruta é "Abacaxi" e a molécula é uma das especificadas
Lista_Frutas = [fruta] if fruta == 'Abacaxi' and (molecula in ['Imidacloprid', 'Thiamethoxam', 'Acetamiprid']) else []
Lista_Molecula = [molecula] if fruta == 'Abacaxi' and (molecula in ['Imidacloprid', 'Thiamethoxam', 'Acetamiprid']) else []

# Imprimindo as listas com os elementos sorteados
print(Lista_Frutas)
print(Lista_Molecula)