2016-06-17 6 views
0

私は以下の解決策を提案しましたが、私はこの行を理解できませんでした。cmd += "("+ ",".join(args) +")"以下のコード。 this.Canの誰かがPython言語でのこのPythonの.joinはどのように機能しますか?

12 
insert 0 5 
insert 1 10 
insert 0 6 
print 
remove 6 
append 9 
append 1 
sort 
print 
pop 
reverse 
print 

マイarttempt

n = input() 
l = [] 
for _ in range(n): 
    s = raw_input().split() 
    cmd = s[0] 
    args = s[1:] 
    if cmd !="print": 
     cmd += "("+ ",".join(args) +")" 
     eval("l."+cmd) 
    else: 
     print l 
+0

あなたは '理解しています "" 自身で'(引数)に参加しますか...。? – deceze

+0

アーカイブをしようとしていますか? –

+0

いいえ私は分かりません.deceze –

答えて

1

は、次の入力行を検討よう

質問の入力を読んでいる私を助けてくださいので、私はfrustated得た:

insert 1 10 

したがってsはリストです["insert", "1", "10"]。 list要素はすべて文字列であることに注意してください。

従ってcmd"insert"であり、args["1", "10"]である。

ここではわからない部分があります。まず、",".join(args)は、argの要素で構成された単一の文字列をカンマで区切って作成します。"1,10"

これは、かっこで囲んだ:"(1,10)"です。最後にcmdに追加され、結果として文字列"insert(1,10)"が生成されます。

次に、"l."の先頭に、"l.insert(1,10)"という文字列が追加されます。これはevalに渡されます。

リストlinsertメソッドを呼び出すと、値10を位置1に挿入しています。つまり、実行中ですl.insert(1,10)

+0

トムに感謝します。完全に理解した:) –

1

あなたの質問は次の行が何を意味するのである:

cmd += "("+ ",".join(args) +")" 

cmdは(文字列で)変数です。

+=は、左側に右側を追加する演算子です。

"("は、左括弧を含む文字列です。

+は、それ自身の左右を追加する演算子です。

",".join(args)これにより、リストargsがコンマで区切られたリストになります。たとえば、

args =['bob','sue','tom'], then: 
",".join(args) 
> bob,sue,tom 

もう一度、+は、それ自身の左右を追加する演算子です。

)は、右括弧を含む文字列です。

したがって、引数は、[「ボブ」、スー「」トム]で、cmdは名前であれば、このラインの出力は次のようになります。

cmd = "names" 
args =["bob","sue","tom"] 
cmd += "("+ ",".join(args) +")" 
print cmd 
> names(bob,sue,tom) 
1

この行は、あなたのことを確実にするためにありコマンドは正しい構文であり、あなたが呼び出すときに角かっことカンマが付きます!私は以下のコードでは、それが明確に書いている:

cmd = 'insert' 
arg1 = '1' 
arg2 = '3' 
arg3 = '10' 

cmd = cmd + "(" + ",".join((arg1, arg2, arg3)) + ")" 
print cmd 

出力:

insert(1,3,10) 
関連する問題