2

リストを持つ:

x=['s',2,'3',4,5,6]

次のように印刷できます。

for i in x:
        print i

ただし、私が見つけたように、次のように 1 つの print ステートメントを使用する方が少し高速です (以下は、この時点に到達する方法です)。

print "\n".join( i.__class__==string and i or str(i) for i in x )

2 番目のオプションを使用し、出力を次のようにしたい場合 (カウンターも含めたい): v1: s v2: 2 v3: 3 etc

これが私が試したことです:

1)

count=0
print (("v"+str(++count)).join(":%s "% i for i in x  ) )

結果は::s, v0:2, v0:3, v0:4, v0:5, v0:6, 本当に私が目指しているものではありません。

a) str(++count) は何も出力せず、count++ はシンタックス エラーを返します

b) firstvはどこにもありませんjoin。この場合、セパレータが追加され、最初の要素が必要ないためです。

2)

print ( ["v"+str(++count)+ ":%s, "% i for i in x ] )

与える['v0:s, ', 'v0:2, ', 'v0:3, ', 'v0:4, ', 'v0:5, ', 'v0:6, ']より良いが、それでもいいえ、私は示されcounterたくありません[]

3) すべてをスクラッチして再起動します。

print ",".join(i  for i in x ) 

連結できないためstring、次のintようになります。

print ",".join(i.__class__==string and i or str(i)  for i in x )

与える:

s,2,3,4,5,6

そして、ここが私が立ち往生している場所です。

4

2 に答える 2

7

使用することをお勧めしますenumerate

x = ['s',2,'3',4,5,6]
print ', '.join('v{}: {}'.format(v, i) for v, i in enumerate(x))
# v0: s, v1: 2, v2: 3, v3: 4, v4: 5, v5: 6
于 2013-10-16T09:45:46.430 に答える
2

@ARodasの回答には同意しますが、次のことも指摘したいと思います。

  1. プログラムの最適化を開始する前に、印刷が実際にプログラムのボトルネックであることを確認する必要があります (非常にまれです)。

  2. expr1 and expr2 or expr3expr2 if expr1 else expr3三項演算子が導入されたとき、Python 2.5より前に使用されていました。Py <= 2.4 を対象としていない場合は、 を使用することをお勧めしますif else

  3. 代わりに、i.__class__==string書く方が良いですisinstance(i, string)stringとにかく、とは何ですか? 意味がありましたstrか?)。

  4. さらに、実際にチェックする必要はありません:str()文字列の はこの文字列を返すだけです。

  5. ++Python には演算子はありません。++count == +(+count) == count.

于 2013-10-16T09:58:50.513 に答える