Nice programing

튜플에 값을 추가하는 방법?

nicepro 2020. 10. 23. 18:56
반응형

튜플에 값을 추가하는 방법?


나는 같은 튜플 목록이있는 스크립트에서 작업하고 ('1','2','3','4')있습니다. 예 :

list = [('1','2','3','4'),
        ('2','3','4','5'),
        ('3','4','5','6'),
        ('4','5','6','7')]

지금은 추가 할 필요가 '1234', '2345', '3456''4567'각 튜플의 끝에서 각각. 예 :

list = [('1','2','3','4','1234'),
        ('2','3','4','5','2345'),
        ('3','4','5','6','3456'),
        ('4','5','6','7','4567')]

어떤 식 으로든 가능합니까?


튜플은 불변이며 변경되지 않아야합니다. 이것이 바로 목록 유형입니다. 각 튜플을로 대체 originalTuple + (newElement,)하여 새 튜플을 만들 수 있습니다. 예를 들면 :

t = (1,2,3)
t = t + (1,)
print t
(1,2,3,1)

그러나 항목을 삽입하는 것이 더 빠르기 때문에 처음부터 목록을 사용하는 것이 좋습니다.

또 다른 힌트 : list프로그램에 내장 된 이름 덮어 쓰지 말고 변수 l나 다른 이름을 호출하십시오 . 기본 제공 이름을 덮어 쓰면 현재 범위에서 더 이상 사용할 수 없습니다.


구문에 따르면 이것이 Python이라고 생각합니다. 튜플의 요점은 불변이기 때문에 각 요소를 새 튜플으로 교체해야한다는 것입니다.

list = [l + (''.join(l),) for l in list]
# output:
[('1', '2', '3', '4', '1234'), 
 ('2', '3', '4', '5', '2345'), 
 ('3', '4', '5', '6', '3456'), 
 ('4', '5', '6', '7', '4567')]

파이썬에서는 할 수 없습니다. 튜플은 변경할 수 없습니다.

포함 목록에서 튜플 ('1', '2', '3', '4')을 다른 ('1', '2', '3', '4', '1234')튜플으로 바꿀 수 있습니다.


다른 사람들이 대답했듯이 파이썬의 튜플은 불변이며 하나를 '수정'하는 유일한 방법은 추가 된 요소가 포함 된 새 튜플을 만드는 것입니다.

그러나 가장 좋은 해결책은 목록입니다. 튜플이 필요한 함수 나 메서드를 호출해야 할 때 tuple (list)를 사용하여 튜플을 만듭니다.


다른 답변에서 언급했듯이 튜플은 일단 생성되면 변경할 수 없으며 목록이 더 나은 목적을 제공 할 수 있습니다.

즉, 추가 항목으로 새 튜플을 만드는 또 다른 옵션은 splat 연산자를 사용하는 것입니다.

new_tuple = (*old_tuple, 'new', 'items')

나는이 구문이 새로운 튜플처럼 보이기 때문에 당신이하려는 일을 명확하게 전달 하기 때문에 좋아합니다.

splat을 사용하는 잠재적 솔루션은 다음과 같습니다.

list = [(*i, ''.join(i)) for i in list]


tuple관련 세부 정보를 list살펴 보았으며 이해 한 내용은 다음과 같습니다.

  • 튜플은 Heterogeneous컬렉션 데이터 유형입니다.
  • 튜플의 길이고정되어 있습니다 (튜플 유형 당)
  • 튜플은 항상 유한합니다.

따라서 새 항목을 튜플에 추가하려면으로 캐스팅하고 작업을 list수행 append()한 다음 다시 튜플로 캐스팅해야합니다.

하지만이 질문에 대해 생각 개인적으로 무엇을, 경우 튜플이 있어야하는 유한 , 고정 길이 항목과 우리가 우리의 응용 프로그램 로직에 그 데이터 형식을 사용하는 경우 다음이해야 하지 새 항목을 추가하거나 항목의 값을 업데이트하는 시나리오가 될 그것. 따라서 튜플 목록 대신 목록 자체 의 목록 이어야합니다. 내가 맞습니까?


    list_of_tuples = [('1', '2', '3', '4'),
                      ('2', '3', '4', '5'),
                      ('3', '4', '5', '6'),
                      ('4', '5', '6', '7')]


    def mod_tuples(list_of_tuples):
        for i in range(0, len(list_of_tuples)):
            addition = ''
            for x in list_of_tuples[i]:
                addition = addition + x
            list_of_tuples[i] = list_of_tuples[i] + (addition,)
        return list_of_tuples

    # check: 
    print mod_tuples(list_of_tuples)

OUTPUTS = []
for number in range(len(list_of_tuples))):
    tup_ = list_of_tuples[number]
    list_ = list(tup_)  
    item_ = list_[0] + list_[1] + list_[2] + list_[3]
    list_.append(item_)
    OUTPUTS.append(tuple(list_))

출력은 당신이 원하는 것입니다

참고 URL : https://stackoverflow.com/questions/4913397/how-to-add-value-to-a-tuple

반응형