のためにPythonでリストの項目の値を変更する: ['CC', 'DC', 'EC', 'FC', 'GC', 'HC', 'XX']
は、私は機能を作成していると機能にこのような文字列のリストを渡していたループ
私は26個の値を持つ変数Xを作成しました。以下の私のコードでは、これらの値を 'card'と呼んでいます( 'for card in X')。
itertoolsとlist comprehensionsを使用して文字列のリストを作成し、Xの各値が新しいリストの 'XX'に置き換えられるようにします。例えば
:['CC', 'DC', 'EC', 'FC', 'GC', 'HC', 'XX']
は「XX」と呼ばれる(私はTMPと呼ばれる値のリストを作成し、tmp内のアイテムのいずれかの(カードと呼ばれる)「X」の値のリストを代入しています['CC', 'DC', 'EC', 'FC', 'GC', 'HC', 'value1'], ['CC', 'DC', 'EC', 'FC', 'GC', 'HC', 'value2'] etc
に拡大します)forループを使用します。
unitoffive = list(itertools.combinations(unit,5))
newunit = [list(line) for line in unitoffive if 'XX' in line]
tmp = [[line,card] for line in newunit for card in X]
for line in tmp:
line[0][4] = line.pop(line.index(line[1]))
print line
for line in tmp:
print line
私のスクリプトは動作していますがわかりません。私の最初のforループのprint line文が実行されると、私が期待する修正リストが表示されます。 2番目のprint line文が呼び出されると、別のバージョンのmy listが表示されます。私はそれが変更されたforループ内に正しい値を含んでいるように見えるので、tmpを返して使用することはできません。
私は、forループで修正するのが難しいかもしれないと知っています。for line in tmp[:]
をループするコードを変更しようとしましたが、それでも問題は解決しませんでした。
コードが印刷さ['CC', 'DC', 'EC', 'FC', 'GC', 'HC', 'value1'], ['CC', 'DC', 'EC', 'FC', 'GC', 'HC', 'value2'] etc
のこのセクションでは、印刷ライン文は予想通り:
for line in tmp:
line[0][4] = line.pop(line.index(line[1]))
print line
印刷ライン文を次のようにそれはあなたが、[ライン、カード]サブリストを変更すると期待している['CC', 'DC', 'EC', 'FC', 'GC', 'HC', 'value26'], ['CC', 'DC', 'EC', 'FC', 'GC', 'HC', 'value26'] etc
どう入力スクリプトを与えていますか?あなたはどんな出力を得ていますか?あなたはどんな出力を期待していましたか?あなたはそれをあなたの質問に含めることができますか? –
リストをループしている間は、長さが変わるだけです。いくつかのサンプルデータを追加すると、バグを見つけやすくなります。 –
このコードは、読んだ後、いくつかのランダムな文字列でテストした後、私が期待することをします。私はあなたが何を入れているのか、何を得たいのかを説明しなければならないと思います。 – senderle