2017-11-18 5 views
1

파이썬에서는 b와 같은 튜플을 몇 개 가지고 있는데,이를 풀지 않고 빈 목록에 추가하려고합니다. 이 B1, B2, B3 것이다 B하므로 실제로, B의 값이 상이한 것, 그 자체를 반복되도록 여기서, I는튜플을 풀지 않고 목록에 튜플을 추가하십시오.

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')] 

제공 ... B 간소화 그것은 내가 원하는 것입니다. 그러나 지금 내가 반복하고 있기 때문에 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)