2016-10-30 2 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 

注意すべきいくつかのこと:

  • あなたはPythonがlistのように使用する変数名を使用しないでください。 iが文字列'abc...'ある場合
  • i == alphabetだけTrueになりますが、文字列中の任意の文字がある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

ロット1を平坦化し、アルファベットを除外します。

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'] 
関連する問題