2016-11-09 13 views
0

新しいタプルの作成に問題があります。私はPythonでちょっと新しいです。混乱したタプルの新しいタプル

私はタプルのリストがあるとします。

a = [1,2,6,4,5] 
b = [3,7,3,4,6] 
[((11, 5, 6), n), ((9, 6, 3), n), ((9, 2, 7), n), ((8, 4, 4), n), ((4, 1, 3), n)] 

私の最終的な目標は次のようにタプルを作ることです[(a+b,a,b),n=count(zip(a,b)),...........]

に属する:+ Bを削除( 、およびput 'N'値をタプルに)

[(5,6,n), (6,3,n), .... ] 
[(a,b,n), .....] 

これを行う方法はありますか?

+2

'を印刷したタプル解凍なしでこれを実現するための方法がありますか?'のもちろんあります。これまでに何を試しましたか?なぜなら、この質問は超広範な気圧であるからです。 – MooingRawr

+1

'count'はPythonで定義された名前ではなく、あなたのlist-comp構文が間違っているので、リストcomp(' n = ')の中で変数を代入することはできません。ですから、あなたの質問を修正して 'count'関数をインクルードし、構文エラーを修正してください。 –

答えて

1

は、単にタプルの解凍を使用します。Tが入力され、結果が要求された形である

[(a, b, n) for ((_, a, b), n) in T] 

例:

>>> T = [((11, 5, 6), 1), ((9, 6, 3), 2), ((9, 2, 7), 3), ((8, 4, 4), 4), ((4, 1, 3), 5)] 
>>> [(a, b, n) for ((_, a, b), n) in T] 
[(5, 6, 1), (6, 3, 2), (2, 7, 3), (4, 4, 4), (1, 3, 5)] 

私は少しあなたが書いたものを混乱さ5

+0

完璧!私はそれを前に使ったことはありませんが、とても便利です。ありがとう@ダン! –

0

に番号1とn年代を交換しました。タプルとリストが2つの異なるデータ構造であることを

  1. zip()returs a list of tuples

注:

zip(a,b,[sum(x) for x in zip(a,b)]) 

それは何:

たぶん、あなたはこれをしたいです。 あなたの質問では、a = []とb = []は整数のリストであり、tuplesではありません。

  • [ f(x) for x in g(y,z)]の構文は擬似コードと等価である:

    for each_item in iterable_like_a_list_is: 
        apply f() to each_item 
        return a list of f(x) items 
    
  • それはlist comprehensionあります。

    1. 最後にzip(x, y, z)を3つのリストに適用します。あなたのケースで は、a、bおよびステップ2
    0

    で得られたA + B私は非常によくあなたの質問を理解していないが、私たちは(私は私を固定し、すべてのタプルのための「n」の値を知っていると仮定します1からnの)

    素朴な解決策は、()

    n = 1 
    x = [((11, 5, 6), n), ((9, 6, 3), n), ((9, 2, 7), n), ((8, 4, 4), n), ((4, 1, 3), n)] 
    y= [(tuple_[0][1],tuple_[0][2], tuple_[1]) for tuple_ in x] 
    print(y) 
    

    [(5, 6, 1), (6, 3, 1), (2, 7, 1), (4, 4, 1), (1, 3, 1)] 
    
    +0

    ありがとう@ニカイード!それは働いている。 nは、Counter(tuple)を使用した後にタプルが発生した結果です。そのリストは、降順で辞書をソートした後の結果です。 –

    関連する問題