많은 파이썬 목록 메서드가 작동하고 None
(내 머리 꼭대기에서 벗어나, insert
, sort
, reverse
)을 반환합니다.목록 할당은 어디로 이동합니까?
그러나 자주 저를 좌절시키는 하나의 행동이 있습니다. 나는 일반적으로 객체를 반환하는 새 목록을 작성하고, 동시에 거기에 삽입하면 새 목록이 "사라"그래서 튜플을 수정하려면
mytup = (0, 1, 2, 3, 4)
print mytup # (0, 1, 2, 3, 4)
mylist = list(mytup)
print mylist # [0, 1, 2, 3, 4]
newlist = list(mytup).insert(0, 10)
print newlist # None
, 그것은 더 라인이 필요합니다
newlist = list(mytup)
newlist.insert(0, 10)
print newlist # [10, 0, 1, 2, 3, 4]
그래서 나는 두 가지 질문이 있습니다
- 내가 목록 생성자를 호출 할 때, 그것은 개체를 반환라고하는 것이 정확하지만 나는 그것에 방법 목록 생성자를 호출 할 때, 메서드는 0123으로 반환 값을 "무시"합니다.? 다시, 목록 은 어디로 가야합니까?
- 튜플에 삽입하고 한 줄로 목록을 반환하는 방법이 있습니까? 나는 코드 골프를하려고하지 않고, 두 라인이 논리적으로 분리되어 있다고 생각하지 않는다.
나는 한 줄에 넣는 것이 좋지 않을 것이라고 주장합니다. 그것들은 분리 된 작업입니다. 왜 그것을 한 줄로 밀어 넣으려고합니까? –
내 머리 속에는 시퀀스가있어서 그것을 수정하고 싶습니다. 목록 인 경우 직접 삽입 할 수 있습니다. 그러나 그것은 내 자신의 잘못이 아닌 튜플 일 뿐이므로 두 줄을 사용해야합니다. 그것은 내 사고 과정을 늦춰 버린다. 많은 상황에서 비슷한 동작을하는 목록 및 튜플의 결과라고 생각합니다. – Lenna
리턴 값을 "대체"하지 않습니다. 무슨 일이 일어나고있는 건'list (...). insert (...)'당신이 실제로 새로 생성 된리스트의 메소드를 호출하고 있다면, 당신은 생성자의 결과를 더 이상 요구하지 않는다. 그리고 물론,이 메소드는'None'을 리턴합니다. – ubik