2017-11-05 3 views
-2

この関数の目的は、入力されたリストに対して新しいリストベースを作成することです。元のリストに文字列がある場合は大文字にします。 ifにBooleanがある場合は、逆にします。リスト内にリストがある場合は、intまたはfloatの場合は 'List'にします。ここで私はどのように私のboolとintのiterableエラーを修正するのですか?

は私の機能である:

def afunc(alist): 
    i = 0 
    new_list = [] 
    for i in range(len(alist)): 
     if type(alist[i]) == str: 
      new_list += alist[i].upper() 
     elif type(alist[i]) == bool: 
      new_list += not alist[i] 
     elif type(alist[i]) == list: 
      new_list += 'List' 
     else: 
      new_list += 1 
    return new_list 
+4

'new_list'は定義されていません。 – Daniel

+1

セミ関連、なぜあなたは "インデックス"を持つループを使用していますか? 'i'の唯一の使い方は、現在のリスト項目にアクセスすることです。この場合、 'alist:'で 'for item 'を実行するだけです – UnholySheep

答えて

2

「+」二つのリストを結合し、int型とブール値は反復可能ではないので、それはエラーが表示されます。

appendを使用してリストに項目を追加します。

def afunc(alist): 
    i = 0 
    new_list = [] 
    for i in range(len(alist)): 
     if type(alist[i]) == str: 
      new_list.append(alist[i].upper()) 
     elif type(alist[i]) == bool: 
      new_list.append(not alist[i]) 
     elif type(alist[i]) == list: 
      new_list.append('List') 
     else: 
      new_list.append(1) 
    return new_list 
関連する問題