0

PythonコードをJavaに移植しようとしています。私はPythonに精通しておらず、これまでどの言語でもこれを見たことがありません。

return [c,] + s

この線は正確にはどういう意味ですか?具体的には[c、]の部分です。2つのアレイを組み合わせているのでしょうか。sは整数の配列で、cは整数です。完全な機能は以下のとおりです(ウィキペディアから:http://en.wikipedia.org/wiki/Ring_signature

def sign(self,m,z):
    self.permut(m)
    s,u = [None]*self.n,random.randint(0,self.q)
    c = v = self.E(u) 
    for i in range(z+1,self.n)+range(z):
        s[i] = random.randint(0,self.q)
        v = self.E(v^self.g(s[i],self.k[i].e,self.k[i].n)) 
        if (i+1)%self.n == 0: c = v
    s[z] = self.g(v^u,self.k[z].d,self.k[z].n)
    return [c,] + s

本当にありがとう!

4

5 に答える 5

5

カンマは冗長です。1つの要素のリストを作成するだけです。

>>> [1,]
[1]
>>> [1] == [1,]
True

練習はPythonでタプルを作成することから来ています。1要素のタプルにはコンマが必要です。

>>> (1)
1
>>> (1,)
(1,)
>>> (1) == (1,)
False

この[c,] + sステートメントは、の値をc最初の要素として使用して新しいリストを作成します。

于 2013-03-26T20:00:37.803 に答える
3

[c,]とまったく同じ[c]です。つまり、単一アイテムのリストです。

(この構文が必要な理由については、この回答を参照してください)

于 2013-03-26T20:00:28.397 に答える
1

リストの場合、余分なコンマは冗長であり、無視できます。リストではなくタプルだった場合にのみ違いが生じるので

[c,] and [c] are the same but,
(c,) and (c) are different. The former being a tuple and later just a parenthesis around an expression
于 2013-03-26T20:02:30.123 に答える
0

両方の質問に答えるために、行は2つのリストを連結します。コンマはPythonによって無視されるため、2つのうち最初のリストは1要素のリストです。

于 2013-03-26T20:06:00.263 に答える
0

私はあなたが正しいと信じています、それは2つの「配列」(Pythonのリスト)を組み合わせています。私が間違っていなければ、この場合、末尾のコンマは不要です。

x = [1,2,3]
y = [1] + x

#is equivalent to

x = [1,2,3]
y = [1,] + x

Pythonがリストで末尾のコンマの使用を許可する理由は、タプルと呼ばれる別のデータ型と、コードでの複数行のリスト宣言での使いやすさに関係しています。

Pythonがリストの末尾のコンマを許可するのはなぜですか?

于 2013-03-26T20:39:50.537 に答える