2017-12-29 9 views
-2

다음 if 문을 확장하여 논리가 else 절을 ​​포함하도록하는 방법은 무엇입니까? 의사 코드는 다음과 같이 작동합니다.else 절을 ​​포함하도록 'if 문'확장

  • Ideal_Singers = 각이 들어 이름 '(비틀즈)'과 하나 ('폴', '요코'또는 '링고')
  • 목록에있는 이름 중 어느 것도 이러한 조건을 충족하지 않는 경우, 다음 Ideal_Singers = 포함 된 각 이름은 '믹'

,이 코드가 지금까지 :

Names = ["John Lennon (Beatle)", "Paul McCartney (Beatle)", "Ringo Starr (Beatle)", "Yoko Ono (Beatle)", "Mick Jagger (Rolling Stone)", "Brian Jones (Rolling Stone)", "Alex Jones (na)", "Adam Smith (na)"] 
Ideal_Singers = [n for n in Names if "Beatle" in n and ("Paul" in n or "Ringo" in n or "Yoko" in n)] 
print Ideal_Singers 

답변

6

당신은 사용할 수 있습니다 any :

names = ["John Lennon (Beatle)", "Paul McCartney (Beatle)", "Ringo Starr (Beatle)", "Yoko Ono (Beatle)", "Mick Jagger (Rolling Stone)", "Brian Jones (Rolling Stone)", "Alex Jones (na)", "Adam Smith (na)"] 
names1 = [i for i in names if any(b in i for b in ['(Beatle)', 'Paul', 'Yoko','Ringo'])] 
ideal_names = names1 or [i for i in names if 'Mick' in i] 

는 출력 :

Names = [ 
    "John Lennon (Beatle)", 
    "Paul McCartney (Beatle)", 
    "Ringo Starr (Beatle)", 
    "Yoko Ono (Beatle)", 
    "Mick Jagger (Rolling Stone)", 
    "Brian Jones (Rolling Stone)", 
    "Alex Jones (na)", 
    "Adam Smith (na)" 
] 
allowed_beatles = ["Paul", "Ringo", "Yoko"] 
Ideal_Singers = [ 
    x for x in [ 
     [n for n in Names if "Beatle" in n and any(b in n for b in allowed_beatles)], 
     [n for n in Names if 'Mick' in n] 
    ] 
    if x 
] 

Ideal_Singers = Ideal_Singers[0] if Ideal_Singers else [] 
print Ideal_Singers 

는 기본적으로 나는 두 목록, 믹의 상태에 따라 비틀즈 조건 하나 하나를합니다

['John Lennon (Beatle)', 'Paul McCartney (Beatle)', 'Ringo Starr (Beatle)', 'Yoko Ono (Beatle)'] 
+1

리스트 믹 재거를 포함하지 아니 하는가? – chrisz

+1

안녕하세요, 감사합니다. 크리스 말이 맞아. 목록에 포함되어 있어야합니다 : [ "폴 매카트니 (비틀)],"링고 스타 (비틀) ","요코 오노 (비틀) "] 또는 ["믹 재거 항목이 조건을 충족시키는 지 여부. – Dongs14173

+1

@ Dongs14173 최근 편집을 참조하십시오. – Ajax1234

0

는 다음 기준을 충족하는 솔루션입니다. 그런 다음 비어 있지 않은 목록 중 첫 번째 목록을 봅니다.

출력 : 다른 조건을 충족 목록에 이름이 있기 때문에

['Paul McCartney (Beatle)', 'Ringo Starr (Beatle)', 'Yoko Ono (Beatle)']