-1

私はPythonを初めて使用し、あるリストから別のリストに間隔を空けてアイテムを追加しようとしています。これまでの私のコードは次のとおりです。

def place_item(a,b):
    interval = (4,8)
    for s in a:
        i = a.index(s)
        b[i:i] = [s]
    print b

a = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

b = [''] * (3*26)

place_item(a,b)

私が得た結果は、リスト内の最初の26文字とそれに続く52''スペースです。これは、「リストa」を複数回作成したり、アイテムを「リストa」に配置したりするように依頼していないため、意味があります。上記のリストの後の4〜8スペースの間隔。つまり、基本的には、「リストa」をループして、4スペースと8スペース離れた「リストb」全体にその文字を散在させようとしています。そして、私はこれを行う方法がわかりません:(。何かアイデアはありますか?

編集:私が忘れていたすべての人が私に指摘したことを含めます。アイテム間のスペースは、アイテムごとにランダムに選択される4〜8文字の長さにする必要があります。結果は次のようになります。

['a','','','','','','b','','','','','','','c','','','','','d'...]

編集2:blob8108は、この方法を使用するとすぐにスペースが不足することを指摘しました。一部の文字を通常の順序で配置し(「a」、「b」、「c」、「d」など)、他の文字をそれらの最初の文字から離しておくことは可能でしょうか(たとえば、「e」、「f」 '、' g'は'a'から4〜8スペース移動しますが、' h'、' i'、' j'は'b'から4〜8スペース移動します)?結果は次のようになります。

['a','b','c','d','g','e','h','i',etc.]
4

1 に答える 1

0

あなたはこれを試すことができます:

import random

abc = [chr(x) for x in range(97, 123)]
out = []

out.append(abc[0])
for item in abc[1:]:
    out += [''] * random.randrange(4, 8)
    out.append(item)

ただし、これには可変長の出力があります。

それが必要な場合は、固定長がどのように機能するかを詳しく説明する必要があります。

于 2012-06-15T09:27:51.570 に答える