2016-10-30 3 views
1

주어진 제비가 있으며 대문자 또는 소문자로 된 모든 문자를 출력한다고 가정합니다. 또한 내장 함수를 사용할 수 없습니다. 편지 목록을 출력하기가 어려워요. 내가 대가로 얻은 것은 빈 닫힌 대괄호입니다.Python - 목록의 모든 문자를 출력하는 방법

alphabet = "abcdefghijklmnopqrstuvwxyz" 

alphabet2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
def get_symbols(lot): 
list = [] 
for i in lot: 
    if (i == alphabet or i == alphabet2): 
     list.append(lot); 
return list 

주어진 많은 :

lot1 = [['.', '.', 'a', 'D', 'D'], 
     ['.', '.', 'a', '.', '.'], 
     ['A', 'A', '.', 'z', '.'], 
     ['.', '.', '.', 'z', '.'], 
     ['.', '.', 'C', 'C', 'C']] 

내 출력 :

Traceback (most recent call last): 
File "tester4p.py", line 233, in test_get_symbols_2 
def test_get_symbols_2 (self): self.assertEqual (get_symbols(lot1()),['a','D','A','z','C']) 
AssertionError: Lists differ: [] != ['a', 'D', 'A', 'z', 'C'] 

Second list contains 5 additional elements. 
First extra element 0: 
'a' 

- [] 
+ ['a', 'D', 'A', 'z', 'C'] 

예상 출력 :

['a', 'D', 'A', 'z', 'C'] 

답변

0

내가 포함되지 않습니다 더 나은 방법이 확신 중첩 루프,하지만 이것은 내가 할 것이라고 :

alphabets = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 
def get_symbols(lot): 
    lst = [] 
    for chars in lot: 
     for c in chars: 
      if c in alphabets and c not in lst: 
       lst.append(c) 
    return lst 

몇 가지 참고 사항 :

  • 당신은 파이썬은 list처럼 사용하는 변수 이름을 사용하지 않아야합니다. i 문자열 'abc...' 경우
  • i == alphabetTrue 수 있지만 문자열의 모든 문자가 Truei 경우 i in alphabet 될 것 'abc...'

업데이트 :

중첩 루프를 방지하기 위해이 변형을 시도해보십시오

alphabets = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 

def get_symbols(lot): 
    flat_lot = [item for sublist in lot for item in sublist] 
    lst = [] 
    for c in flat_lot: 
     if c in alphabets and c not in lst: 
      lst.append(c) 
    return lst 
0

lot1을 균일화 한 다음 알파벳을 필터링합니다.

lot1 = [['.', '.', 'a', 'D', 'D'], 
     ['.', '.', 'a', '.', '.'], 
     ['A', 'A', '.', 'z', '.'], 
     ['.', '.', '.', 'z', '.'], 
     ['.', '.', 'C', 'C', 'C']] 

import operator 
lot1 = reduce(operator.concat, lot1) 
lot1 = filter(str.isalpha, lot1) 
lot1 = list(set(lot1)) 
lot1.sort() 
print lot1 

출력 :

['A', 'C', 'D', 'a', 'z'] 
관련 문제