파이썬 적으로 문자열 튜플 목록 편집 [중복]

Nov 16 2020

mysql은 다음 형식의 튜플 목록을 출력합니다.

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

나는 형태의 튜플 목록을 원한다.

c=[("2","3"),("5","6"),("8","9")]

즉, 각 튜플의 마지막 두 요소를 내 SQL executemany 명령에 넣고 다음 데이터 조각을 가져올 수 있습니다.

내 직감은 명령으로 원하는 매트릭스를 얻을 수 있다는 것입니다.

c=[for b in a: b[1:]]

하지만 파이썬은 그것을 좋아하지 않습니다. 왜 작동하지 않으며 원하는 튜플 목록을 얻는 가장 비단뱀적인 방법은 무엇입니까?

답변

2 AnnZen Nov 16 2020 at 17:01

각 튜플의 마지막 두 요소를 원하기 때문에 각 튜플 의 요소 수가 3이 아닐 때 슬라이스를 사용하면 [1:] (다른 답변과 같이) 작동하지 않습니다.

대신 다음의 음수 조각으로 목록 이해를 사용하십시오 [:-2].

a = [("1","2","3"),("4","5","6"),("7","8","9")]
a = [t[-2:] for t in a]
print(a)

산출:

[('2', '3'), ('5', '6'), ('8', '9')]
3 AdamSmith Nov 16 2020 at 16:54

구문이 약간 잘못되었지만 올바른 접근 방식을 취했습니다.

c = [b[1:] for b in a]
3 AKX Nov 16 2020 at 16:54

i템을 a다음 과 같이 슬라이스하고 싶을 것 입니다 .

>>> a = [("1","2","3"),("4","5","6"),("7","8","9")]
>>> [i[1:] for i in a]
[('2', '3'), ('5', '6'), ('8', '9')]
3 WasifHasan Nov 16 2020 at 16:55

다음과 같이 진행할 수 있습니다. 여기서 for 루프는 끝납니다.

a=[(1,2,3),(4,5,6),(7,8,9)]
c=[b[1:] for b in a]
print(c)