2016-12-08 9 views
4

ための印刷でリストを開梱:アンパックは、Python 2.7でのリストと印刷文では動作しませんなぜ私が理解した上で問題を抱えているのPython 2

>>> l=['a', 'b', 'c'] 
>>> print (*l, sep='') 

のPython 3.xのは、罰金や版画作品:

abc 

のPython 2.7は、しかし、エラーが発生します。

print (*l, sep='') 
    ^
SyntaxError: invalid syntax 

どのように私はそれは、Python 2.7のために働くことができますか?

私は、私が代わりに結合を使用して、それをコーディングすることができます知っている:printは、Python 2の関数ではないので''.join(l)

+0

Python 2には '*'演算子はありません。 –

+1

@EliSadoff:確かにあります。これは[乗算演算子](https://docs.python.org/2/reference/expressions.html#binary-arar-operations)(2と3の両方)です。しかし、呼び出しや関数定義の '*'は演算子ではありませんが、Python 2には存在します。 –

+0

@MartijnPieters自分自身を修正してください、Python 2には単項 '*'演算子はありません。 –

答えて

4

。リストをアンパックして位置指定の引数として提供するの場合、は使用できません。

あなたがこれをサポートするために__future__からprint_functionをインポートする必要があります:

>>> from __future__ import print_function 

今解凍が可能です:

>>> l = ['a', 'b', 'c'] 
>>> print(*l, sep='') 
abc 
+0

Wellcome to the future;) ありがとうJim – user1898781

+0

@ user1898781助けてくれてうれしい!スコアの下にあるチェックマークをクリックして問題が解決したと思ったら、答えの1つを受け入れてください。 :-) –

3

あなたは2つのオプションがあります。

  • 文字列に変換し、スペースで手動で結合します。

    print ''.join(map(str, l)) 
    
  • print声明無効from __future__輸入用いることで、print()functionを使用します。

    from __future__ import print_function 
    
    print(*l, sep='') 
    

    または直接__builtin__ module経由でアクセスして関数を呼び出すを:

    import __builtin__ 
    print_function = getattr(__builtin__, 'print') 
    
    print_function(*l, sep='') 
    

    同じ関数はPython 2とPython 3で利用できますが、Pythonでは2最初にキーワードを無効にしなければ直接使用することはできません。

関連する問題