0

私はこのようなPythonコードをいくつか持っています:

print seq(y), '\t', ', '.join(['%s-%s'%i for i in holetbl[y]])

ただし、内部文字列の生成を条件付きにしたい。ループ内は、文字列iの2つの値に入れられる2つの値のタプルです。%sタプル値が同じである場合、代わりに次のように1つの値のみが必要です。

print seq(y), '\t', ', '.join(['%s'%i for i, j in holetbl[y]])

i == j値のみを出力するかどうかをテストする条件を作成するにはどうすればよいですか。そうでない場合は、上記の元の値と値iの両方を出力しますか?ij

4

2 に答える 2

1

条件式を使用できます

print seq(y), '\t', ', '.join('%s' % i if i == j else '%s-%s' % (i, j)
                              for i in holetbl[y])

ノート

に渡すリストを作成する必要はありませんstr.join。単純なジェネレータ式が機能します。これにより、メモリがより使いやすくなり、比較的高速になります

于 2013-02-26T16:06:37.593 に答える
0

どうですか

'%s-%s'%(i,j) if i != j else '%s'%i
于 2013-02-26T16:07:18.327 に答える