1

たとえば、次のようなリストがあるとします。

one = [1,2,3]

次のように、各要素を独自の個別のリストに分割するために使用できる関数またはメソッドは何ですか。

one = [1]

RANDOM_DYNAMIC_NAME = [2]

RANDOM_DYNAMIC_NAME_AGAIN = [3]

いつでも、呼び出される分割されていないリストにoneは、複数の要素、その動的な要素が含まれる場合があり、このアルゴリズムは、私が自分で宿題としてコーディングしている絞首刑執行人ゲームに必要です。

この例の目的を完了するには、アルゴリズムが必要です。

pick a word: mississippi

guess a letter: s

['_','_','s','s','_','s','s','_','_','_','_']

これが私のコードです:

http://pastebin.com/gcCZv67D

4

3 に答える 3

4

コードを見て、解決しようとしている部分が 24 ~ 26 行目のコメントである場合、そのために動的に作成された変数はまったく必要ありません。助けます。

あなたはこれを持っています:

enum = [i for i,x in enumerate(letterlist) if x == word]

あなたの変数の名前は非常に紛らわしいです. と呼ばれるものwordは推測された文字ですが、別の変数は別letterguessのものであり、それと呼ばれる変数はletter単語全体です.

enumwordwithinのすべてのインデックスのリストですletterlist。たとえば、letterlistis'letter'wordisの場合t、それは になります[2, 3]

次に、これを行います。

bracketstrip = (str(w) for w in enum)

だから今bracketstripです['2', '3']。なぜあなたがそれを望んでいるのかわかりません。

z = int(''.join(bracketstrip))

そして、そう''.join(bracketstrip)です。'23'z23

letterguess[z] = word

と を設定する代わりに設定IndexErrorしようとしているため、が得られます。letterguess[23]letterguess[2]letterguess[3]

これを置き換えたいと思うものは次のとおりです。

enum = [i for i,x in enumerate(letterlist) if x == word]
for i in enum:
    letterguess[i] = word

コードの他の部分に関するいくつかのヒント:

次のようなことを行う場所がいくつかあります。

letterlist = []
for eachcharacter in letter:
  letterlist.append(eachcharacter)

これは と同じletterlist = list(letter)です。しかし、実際には、そのリストはまったく必要ありません。あなたがそれで行う唯一のことはであり、そもそも でfor i, x in enumerate(letterlist)まったく同じことを行うことができた. letterあなたは通常、必要以上に物事を自分で難しくしています。コードの各行を書いた理由を実際に理解していることを確認してください。

「他の方法ではうまくいかなかったから」は理由にはなりません。<em>何をしようとしていたのですか? listなぜ文字が必要だと思いましたか? これらすべての決定を一度に頭の中に入れておくことは誰にもできません。スキルが高ければ高いほど、コードの多くが明白になり、コメントは不要になりますが、コメントが不要になることは決してありません。始めたばかりのときは、何かを行う方法を理解するたびに、何をしようとしていたのか、なぜそれが機能するのかを思い出させるコメントを追加してください。コメントは後でいつでも削除できます。あなたが書いていないコメントを取り戻すことはできません。

于 2012-12-14T02:10:47.410 に答える
0

一問目は、一覧だけでも分かりやすいと思います。各要素を個別のリストとして返します

[ [x,] for x in one ]
于 2012-12-14T01:58:20.850 に答える
-1

あなたの質問に対する文字通りの答えについては、これがあなたのやり方ですが、なぜあなたがこれをしたいのか想像できません. 一般に、動的変数名は不適切な設計です。おそらく、単一のリストまたはリストのリストが必要なだけです。

import random

for x in one:
    name = 'x' + str(random.getrandbits(10))
    globals()[name] = [x]
于 2012-12-14T01:59:31.970 に答える