이 글의 내용은 Python에서 Iterable 객체를 별도의 변수로 분해하는 구현 방법(코드)에 대한 내용입니다. 필요한 친구가 참고할 수 있기를 바랍니다.
1. 요구 사항
이제 N 요소를 포함하는 튜플 또는 시퀀스가 있고 이를 N개의 개별 변수로 분해하려고 합니다.
2. 솔루션
파이썬에서는 간단한 할당 작업을 통해 모든 시퀀스, 튜플 또는 직렬화 가능 객체를 별도의 변수로 분해할 수 있습니다.
유일한 요구사항은 변수의 총 개수와 구조가 순서와 일치해야 한다는 것입니다. 일치하지 않으면 오류가 보고됩니다
예제 표시:
#将序列分解为单独的变量 m=(1,2) x,y=m print("x=",x) print("y=",y) print("*"*30) data=["mark",18,"超级帅",(1992,5,4)] name,age,feature,birthday=data print("name=",name) print("age=",age) print("feature=",feature) print("birthday=",birthday) print("*"*30) name,age,feature,(year,mon,day)=data print("name=",name) print("age=",age) print("feature=",feature) print("year=",year) print("mon=",mon) print("day=",day)
Result
x= 1 y= 2 ****************************** name= mark age= 18 feature= 超级帅 birthday= (1992, 5, 4) ****************************** name= mark age= 18 feature= 超级帅 year= 1992 mon= 5 day= 4
3. Thinking
사실 객체가 반복 가능한 한 이는 단순한 튜플 목록이 아닙니다. 그런 다음 문자열, 파일, 반복자, 생성기를 포함한 분해 작업을 수행할 수 있습니다.
표시 예:
#将序列分解为单独的变量 mark="mark" m,a,r,k=mark print(m) print(a) print(r) print(k) print("*"*30) #有时候我们想丢弃某个值,单由于变量数量必须和要分解的对象的可分解数量相同,此时我们可以使用_来表示要丢弃的值。 mark="mark" m,a,r,_=mark print(m) print(a) print(r) #其实_还是一个变量,指示看起来舒服点 print(_)
결과:
m a r k ****************************** m a r k
4. 요구사항 업그레이드
직렬화 가능한 객체를 N개 요소로 분해할 수 있다면 N개 요소를 만들어야 합니까? N의 값이 매우 크면 어떻게 될까요?
5. 솔루션 업그레이드
Python의 "*표현식"은 위의 요구 사항을 충족할 수 있습니다. 예를 들어, 성적 목록이 셀 수 없이 많습니다. 이제 첫 번째 성적과 마지막 성적을 제거하고 나머지 성적의 평균을 구하고 싶습니다.
Code
import numpy as np grades=list(range(10))#定义一个0-999的分数列表 print("grades:"+str(grades)) first,*middle,last=grades print("middle:"+str(middle)) print("去掉第一个和最后一个分数后的平均值:"+str(np.mean(middle)))
Result
grades:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] middle:[1, 2, 3, 4, 5, 6, 7, 8] 去掉第一个和最后一个分数后的平均值:4.5
물론 이 [*식은 ]는 첫 번째 위치, 마지막 위치 또는 다른 위치에 위치할 수 있습니다.
일부 사용자 레코드가 있고 레코드가 이름과 이메일 주소, 그 뒤에 전화번호로 구성되어 있다고 가정합니다.
record=('mark','1782980833@qq.com','18321859453','18956245389') name,email,*phone_numbers=record print(name) print(email) print(phone_numbers)
실행 결과:
mark 1782980833@qq.com ['18321859453', '18956245389']
6 *표현 기법
*표현이 반복됩니다. 가변 길이 튜플 시퀀스로 작업할 때 특히 유용합니다.
코드:
records=[ ('foo',1,2), ('bar','hello'), ('foo',3,4), ] def do_foo(x,y): print('foo',x,y) def do_bar(s): print('bar',s) for tag,*args in records: if tag=='foo': do_foo(*args) elif tag=='bar': do_bar(*args)
결과:
foo 1 2 bar hello foo 3 4
또한 특정 문자열 처리 작업(예: 분할)과 결합할 때도 유용합니다.
코드:
line='nobody:*:-2:-2:unp user:/var/empty:/user/nim/false' uname,*fileds,homedir,sh=line.split(':') print(uname) print(homedir) print(sh)
결과:
아아아아위 내용은 Python에서 반복 가능한 객체를 별도의 변수로 분해하는 방법(코드)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!