2017-04-21 8 views
0

私は、リスト内のすべての7つの要素の後に1つのヌル要素を挿入したい後:挿入ヌルは、リスト内のすべての第七の要素

私は次のことを試してみましたが、それは(第7要素の後に)最後に「」挿入されません。 :

>>> mapline.append('') 
>>> mapline 
['a', 'b', 'c', 'd', 'e', 'f', 'g', '', 'h', 'i', 'j', 'k', 'l', 'm', 'n', ''] 

これを解決するための任意の代替があります:私は最後に '' 追加する必要がありました

mapline = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n'] 
i = 7 
while i < len(mapline): 
    mapline.insert(i, '') 
    i += 8 

>>> mapline 
['a', 'b', 'c', 'd', 'e', 'f', 'g', '', 'h', 'i', 'j', 'k', 'l', 'm', 'n'] 

>>> len(mapline) 
15 

+1

すべての '7'を実行するにはなぜ' i + = 8'ですか?最初の挿入物がリストを伸ばすからでしょうか?リストがもっと長かったら?または、この現実的なデータですか? –

+1

私はこのアプローチを 'insert'で使うことを勧めません。非効率的です。 –

答えて

3

オフバイエラーです。あなたは最後の要素は、「カウント」にしたい場合は、単に<=に条件を変更:

while i <= len(mapline): 
1

はこれが何をすべきこと

mapline = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n'] 

newline = [] 

for i, line in enumerate(mapline): 
    if (i + 1) % 7 == 0: 
     newline.append('') 
    newline.append(i) 
+0

'enumerate(seq、1)'を使って '1 'からのカウントを開始することができます –

+0

提案していただきありがとうございます! –

+0

このアプローチは 'insert'よりもはるかに優れていますが、新しいリストを作成します。しかし、私はこのようなものに行くだろう... +1 –

0

ループがnull要素を追加するために、1つのより多くの時間を実行する必要があります

while i < len(mapline) + 1 : 
関連する問題