2017-08-20 3 views
0

Besoin ceci:Python - Trouver un numéro dans une liste de chaînes et de retour Chaîne + Numéro

a_1 = 10 
a_2 = 15 
a_3 = 4 
a_4 = 25 

x = 3 

a_(x) = 4 

J'ai essayé ceci:

list = ["a_1", "a_2", "a_3", "a_4"] 
x = 3 
matching = [s for s in list if (x) in s] 

TypeError: 'en' exige chaîne comme opérande gauche, non int

Alors:

list = ["a_1", "a_2", "a_3", "a_4"] 
x = "3" 
matching = [s for s in list if (x) in s] 
matching = 'a_3' 

Ça a marché, mais y a-t-il un meilleur moyen?

+2

Pourriez-vous préciser ce que vous avez besoin/essaient de le faire ... Il est peut-être, mais Je ne peux pas comprendre ce que vous demandez réellement/après. Peut-être une phrase comme: "J'ai abc et je veux xyz qui me donnera foobar" ... –

+2

hm, l'erreur dit ce qui ne va pas, et vous avez vu que vous deviez faire une chaîne de 'x', alors pourquoi pas simplement '[s pour s dans liste si str (x) dans s]'. En outre, ** ne pas ** choisir les noms de variables qui sont en conflit avec les types Python: 'list' n'est pas un bon nom. –

+0

lol realy Marcus, thx – leandurus

Répondre

0

Je ne savais vraiment pas comment demander, tout ce que je avais besoin était le suivant:

eval("a_" + str(x)) 

thx tous

+0

Je ne recommande pas d'utiliser 'eval()' pour cela. Le commentaire de Marcus Muller est la meilleure réponse. –