2017-11-18 16 views
1

Pythonでは、bのようなタプルがいくつかあります。それらを解凍しないで空のリストに追加したいのですが。ここでは、それが繰り返されるように、私はBを簡素化、現実には、Bの値が異なるだろう、そうbはB1、B2、B3 ...タプルを展開せずにリストにタプルを追加

b = ({'a': 1, 'b': 1, 'c': 1}, 'y') 
bb = [b, b, b] 
print(len(bb)) 
print(len(bb[0])) 
bb 

だろうこれは

3 2 Out[204]: [({'a': 1, 'b': 1, 'c': 1}, 'y'), ({'a': 1, 'b': 1,'c': 1}, 'y'), ({'a': 1, 'b': 1, 'c': 1}, 'y')] 

を与えますそれは私が望むものです。しかし、今私はループでやっているので、bb = [b、b、b]と書くことはできません。私が思いついた文法は、私が欲しくないようなひらめきを作ります。

bb =() 
b = ({'a': 1, 'b': 1, 'c': 1}, 'y') 
bb = [bb, b] 
# in reality I loop bb with 3 times in for loop 
bb = [bb, b] 
bb = [bb, b] 
print(len(bb)) 
print(len(bb[0])) 
bb 

これは

[[[(), ({'a': 1, 'b': 1, 'c': 1}, 'y')], ({'a': 1, 'b': 1, 'c': 1},'y')], ({'a': 1, 'b': 1, 'c': 1}, 'y')] 

を与え、私が望んでいたたくされていません。どのようにループして最初の結果に達することができますか?

+1

は何 '[B、B、Bと警戒してください] 'does - 各タプルに_dictionary_の参照コピーを作成します。 –

答えて

0

ただ、リストの内包表記を使用します。

b = ({'a': 1, 'b': 1, 'c': 1}, 'y') 
bb = [b for i in range(3)] 

出力:

[({'a': 1, 'c': 1, 'b': 1}, 'y'), ({'a': 1, 'c': 1, 'b': 1}, 'y'), ({'a': 1, 'c': 1, 'b': 1}, 'y')] 
+0

ありがとうございますが、現実には私のbは毎回値が異なります。それは({'a':0、 'b':1、 'c':1}、 'y' )、({'a':1、 'b':1、 'c':0}、 'y')...あなたが提供した構文は機能しません... – TingTing

+0

あなたのリストの理解は、 'bb = [b] * 3';) – timgeb

0

リストをスタートし、使用append

bb = [] 
b = ({'a': 1, 'b': 1, 'c': 1}, 'y') 
for _ in range(3): 
    bb.append(b) 
関連する問題