2013-12-19 9 views
0

У меня есть этот маленький кусок кода, с которым я работаю. Я новичок, любезно прошу прощения за мое невежество.Для цикла с Если не работает как ожидалось

Желаемое логика:

для значения в списке у, найти любое совпадение в списке s и распечатать значения в списке s (не перечисляют у). Мой текущий код выводит список y, но я действительно хочу список s.

Вот мой текущий код:

y = ['a','m','j'] 
s = ['lumberjack', 'banana split'] 

for x in s: 
    if any(x in alpha for alpha in y): 
      print x 

Я намерен напечатать «лесоруб» и «банановым», но код, как это печатает «а» Пожалуйста, помогите :)

Спасибо

+0

возможно только ', если у в с: печать s' –

+0

Ваш для -Лоп с 'any' кажется слишком сложным. Такая логика часто довольно проста и проста в python. – keyser

+0

Трудно угадать, что вам нужно, когда описание настолько отличается от кода. Вы пишете о «списках», но в коде нет. –

ответ

1

Печать «а» правильно, если вы хотите распечатать «лесоруб», добавьте эти символы в списке альфа (т.е. переменная у)

y = 'albumjcker' # all characters inside "lumberjack" 
s = 'lumberjack' 

for x in s: 
    if any(x in alpha for alpha in y): 
      print x 

должен сделать трюк


Try :

y = ["a", "b", "c", "l"] 
s = ["banana split", "lumberjack"] 
for words in s: 
    for char in y: 
     if char in words: 
      print (words) 
      break 

y = ["animal","zoo","potato"] 
s = ["The animal farm on the left","I had potatoes for lunch"] 
for words in s: 
    for char in y: 
     if char in words: 
      print (words) 
      break 

The animal farm on the left 
I had potatoes for lunch 

Редактировать

y = ["animal","zoo","potato"] 
s = ["The animal farm on the left","I had potatoes for lunch"] 
s = list(set(s)) # But NOTE THAT this might change the order of your original list 
for words in s: 
    for char in y: 
     if char in words: 
      print (words) 
      break 

если важен порядок, то я думаю, вы можете сделать только

y = ["animal","zoo","potato"] 
s = ["The animal farm on the left","I had potatoes for lunch"] 

new = [] 
for x in s: 
    if x not in new: 
     new.append(x) 
s = new 

for words in s: 
    for char in y: 
     if char in words: 
      print (words) 
      break 
1

В вашем цикле for вы просто печатали символ, который вы повторяли в то время, а не всю строку.

y = 'a' 
s = 'lumberjack' 

for x in s: 
    if any(x in alpha for alpha in y): 
     print s # Return 'lumberjack' 

EDIT Если у вас есть список символов (как ваш комментарий предложил) затем:

y = ['a', 'z', 'b'] 
s = 'lumberjack' 

def check_chars(s, chars): 
    for char in y: 
     if char in s: 
      print s 
      break 

for s in ['lumberjack','banana split']: 
    check_chars(s,y) 

Это проверяет, является ли строка в у («а») является подстрока с ('lumberjack'), он также ломается после того, как вы напечатали, поэтому вы не можете печатать несколько раз.

+0

В соответствии с вопросом 'y' будет список, хотя, возможно, потребуется некоторое понимание цикла/списка – keyser

+0

Потрясающие. Спасибо. Что делать, если в списке есть несколько элементов. Например, y = 'a', 'm', 'j' и s = 'lumberjack', 'banana split' Большое спасибо. – BlackHat

+0

Cool :) Я редактировал код для нескольких символов в y. – Ffisegydd

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