2016-02-18 2 views
0

Я хочу, чтобы проверить, является ли строка в списке и проверьте, является ли он не в списке, а также:Использование операторов в списках

supplies = ['pens','staplers','flame-throwers','binders']  

m = ['pens','a'] 
b = ['',not] 

for x in range(len(m)): 
    for j in range(len(b)): 
     print(m[x] , b[j] , m[x] + b[j] in supplies) 

Однако я получаю ошибку синтаксиса на:

b = ['',not] 

Если изменить это:

b = ['','not'] 

тогда не запускает операцию и говорит, что не в поставках является Ложные что неправильно.

Как мне войти не в список b, чтобы он выполнялся как оператор?

Благодаря

+0

Не уверен, что именно вы ищете, но это '' строка 'не в поставках'? – JCOC611

+0

Возможно, вам нужны xnor 'b [j]' и 'm [x] в поставках'? – StephenTG

+0

Я не верю, что вы можете хранить операторов в списках. Что именно ты пытаешься сделать? Почему вы не можете просто сказать «если элемент в поставках» или «если элемент не в поставках»? –

ответ

0

Вы не можете хранить оператор в список. Аналогичным образом попробуйте foo = [+, -, /, *]. Он не работает - оператор должен работать!

Что вы COULD do - создать функцию, которая выполняет эту операцию, и вместо этого сохранить это.

b = [("in", lambda el, lst: el in lst), 
    ("not in", lambda el, lst: el not in lst)] 

for word in m: # why are you indexing this? 
    for desc, f in b: # or this? 
     if f(word, supplies): 
      print(word, desc, "list 'supplies'") 
0

Я думаю, что это может делать то, что вы пытаетесь достичь:

supplies = ['pens','staplers','flame-throwers','binders']  

m = ['pens','a'] 
b = [True,False] #True if we want to see if the element is in the list, 
       #False if we want to see if it is not in the list 

for x in range(len(m)): 
    for j in range(len(b)): 
     print(m[x] , b[j] , b[j] == (m[x] in supplies)) 

Или, если вы не имеете никакого контроля над форматом Ь, немного более запутанным решение:

1

Если вы правильно поняли, вы пытаетесь выяснить для каждого значения в m, находится ли он в supplies или нет. Попробуйте это:

supplies = ['pens','staplers','flame-throwers','binders']  
m = ['pens','a'] 

# this will iterate each item in the list m, no need to iterate over m indices in this case 
for item in m: 
    print(item, item in supplies) 
-1

Например, вы можете использовать функцию Eval():

print(m[x], b[j], eval("'%s' %s in supplies" % (m[x], b[j]))) 

Variable б должно быть как:

b = ['','not'] 
+1

Просто следует предупредить, что eval опасен, особенно если пользователь имеет какой-либо контроль над тем, что заканчивается в 'supplies' – StephenTG

Смежные вопросы