<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=2%ED%95%99%EA%B8%B0%ED%8C%8C%EC%9D%B4%EC%84%A0%EC%8A%A4%ED%84%B0%EB%94%94%2F_%ED%8A%9C%ED%94%8C%2C_%EC%82%AC%EC%A0%84</id>
	<title>2학기파이선스터디/ 튜플, 사전 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=2%ED%95%99%EA%B8%B0%ED%8C%8C%EC%9D%B4%EC%84%A0%EC%8A%A4%ED%84%B0%EB%94%94%2F_%ED%8A%9C%ED%94%8C%2C_%EC%82%AC%EC%A0%84"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=2%ED%95%99%EA%B8%B0%ED%8C%8C%EC%9D%B4%EC%84%A0%EC%8A%A4%ED%84%B0%EB%94%94/_%ED%8A%9C%ED%94%8C,_%EC%82%AC%EC%A0%84&amp;action=history"/>
	<updated>2026-05-15T22:31:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=2%ED%95%99%EA%B8%B0%ED%8C%8C%EC%9D%B4%EC%84%A0%EC%8A%A4%ED%84%B0%EB%94%94/_%ED%8A%9C%ED%94%8C,_%EC%82%AC%EC%A0%84&amp;diff=26740&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:22, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=2%ED%95%99%EA%B8%B0%ED%8C%8C%EC%9D%B4%EC%84%A0%EC%8A%A4%ED%84%B0%EB%94%94/_%ED%8A%9C%ED%94%8C,_%EC%82%AC%EC%A0%84&amp;diff=26740&amp;oldid=prev"/>
		<updated>2021-02-07T05:22:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= 1. 튜플 =&lt;br /&gt;
&lt;br /&gt;
== 1. 튜플의 연산 ==&lt;br /&gt;
&lt;br /&gt;
* 튜플은 리스트와 같은 시퀀스 형이므로 시퀀스 형이 갖는 일반적인 연산을 모두 갖는다 (인덱싱, 슬라이싱, 연결, 반복, 길이 연산 등)&lt;br /&gt;
* 튜플은 ()로 표현된다.&lt;br /&gt;
* 튜플과 리스트의 차이점은 튜플은 변경 불가능형이라는 것과, 리스트가 갖고 있는 것과 같은 메쏘드(자체 함수)를 갖지 않는다는 것이다.&lt;br /&gt;
&lt;br /&gt;
 t = ()      # 공 튜플&lt;br /&gt;
 t = (1,2,3)&lt;br /&gt;
 &lt;br /&gt;
 t = 1,2,3     # 괄호가 없어도 튜플이됨&lt;br /&gt;
 &lt;br /&gt;
 r = (1,)&lt;br /&gt;
 r = 1,       # r=1로 해석되지 않기 위함&lt;br /&gt;
 &lt;br /&gt;
 t[0]=100  # 허용 안됨. 에러 발생&lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 * 튜플을 이용하여 좌우변에 복수개의 자료를 치환할 수 있다.&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; x,y,z=1,2,3&lt;br /&gt;
 &lt;br /&gt;
 * 이를 이용하여 두 변수의 값을 쉽게 치환할 수 있다.&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; x = 1&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; y = 2&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; x, y = y, x&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; x, y&lt;br /&gt;
 (2,1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 패킹과 언패킹 ==&lt;br /&gt;
&lt;br /&gt;
튜플 패킹 - 한 튜플 안에 여러 개의 데이터를 넣는 것을 튜플 패킹이라고 한다.&lt;br /&gt;
 t = 1,2,&amp;#039;hello&amp;#039;&lt;br /&gt;
튜플 언패킹 - 반대로, 튜플에서 데이터를 꺼내오는 것을 튜플 언패킹이라고 한다.&lt;br /&gt;
 x,y,z = t&lt;br /&gt;
&lt;br /&gt;
* 리스트와 튜플은 상호 변환이 가능하다.&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; T = (1,2,3,4,5)&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; L = list(T)&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; L[0] = 100&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; L&lt;br /&gt;
 [100, 2, 3, 4, 5]&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; T = tuple(L)&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; T &lt;br /&gt;
 (100, 2, 3, 4, 5) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 튜플을 사용하는 경우 ==&lt;br /&gt;
&lt;br /&gt;
# 함수에 있어서 하나 이상의 값을 리턴하는 경우&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; def calc(a,b):&lt;br /&gt;
           return a+b, a*b&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; x, y = calc(5, 4)&lt;br /&gt;
&lt;br /&gt;
# 문자열 포매팅&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; print &amp;#039;id : %s, name : %s&amp;#039; % (&amp;#039;gslee&amp;#039;,&amp;#039;GangSeong&amp;#039;)&lt;br /&gt;
 id : gslee, name : GangSeong&lt;br /&gt;
&lt;br /&gt;
# apply 함수를 사용할 때&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; apply(calc, (4,5))&lt;br /&gt;
 (9,20)&lt;br /&gt;
&lt;br /&gt;
# 그 이외에 고정된 값을 표현하기 위하여 튜플을 사용한다.&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; d = {&amp;#039;one&amp;#039;:1, &amp;#039;two&amp;#039;:2}&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; d.items()&lt;br /&gt;
 [(&amp;#039;one&amp;#039;,1), (&amp;#039;two&amp;#039;,2)]&lt;br /&gt;
&lt;br /&gt;
= 2. 사전 =&lt;br /&gt;
&lt;br /&gt;
* 사전은 임의의 객체의 집합적 자료형인데, 자료의 순서를 갖지 않는다. &lt;br /&gt;
* 집합적이라는 의미에서 리스트나 튜플과 동일하나, 자료의 순서를 정할 수 없는 매핑(mapping)형이다.  &lt;br /&gt;
* 매핑형에서는 키(key)를 이용해 값(value)에 접근하다.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; dic = {}               # dic이라는 이름으로 비어있는 사전을 만든다.&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; dic[&amp;#039;dictionary&amp;#039;] = &amp;#039;1. A reference book containing an alphabetical list of words, ...&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; dic[&amp;#039;python&amp;#039;] = &amp;#039;Any of various nonvenomous snakes of the family Pythonidae, ...&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; dic[&amp;#039;dictionary&amp;#039;]      # dic아, ‘dictionary’가 뭐니?&lt;br /&gt;
 &lt;br /&gt;
 &amp;#039;1. A reference book containing an alphabetical list of words, ...&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; member = {&amp;#039;basketball&amp;#039; :5, &amp;#039;soccer&amp;#039;:11, &amp;#039;baseball&amp;#039;:9}&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; member[&amp;#039;baseball&amp;#039;]  # 검색&lt;br /&gt;
 9&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; member[&amp;#039;volleyball&amp;#039;] = 7  # 항목 추가&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; member&lt;br /&gt;
  {&amp;#039;soccer&amp;#039; : 11, &amp;#039;volleyball&amp;#039; : 7 &amp;#039;baseball&amp;#039; : 9 , &amp;#039;basketball&amp;#039; : 5}&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; len(member)&lt;br /&gt;
 4&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; del member[&amp;#039;basketball&amp;#039;]  # 항목 삭제&lt;br /&gt;
&lt;br /&gt;
* 사전의 순서는 입력값의 종류에 따라서 언제든지 바뀔 수 있다. &lt;br /&gt;
  이런 구조를 사용하는 이유는 키에 의한 검색속도를 빨리하기 위함이다.  &amp;lt; 해쉬 (hash) 용법 &amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 값은 임의의 객체가 될 수 있지만, 키는 변경 불가능(immutable) 자료형이어야 한다. &lt;br /&gt;
  따라서 문자열, 숫자, 튜플은 키가 될 수 있지만, 리스트, 사전은 키가 될 수 없다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
함수를 키나 값으로 활용할 수도 있다.&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; def add(a,b):&lt;br /&gt;
         return a+b&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; def sub(a,b):&lt;br /&gt;
         return a-b&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; action = {0:add, 1:sub}&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; action[0](4,5)&lt;br /&gt;
 9&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; action[1](4,5)&lt;br /&gt;
 -1&lt;br /&gt;
&lt;br /&gt;
== 사전 객체의 메소드 ==&lt;br /&gt;
# D.keys() : 사전에서 키들을 리스트로 리턴&lt;br /&gt;
# D.values() : 값들을 리스트로 리턴&lt;br /&gt;
# D.items() : (key, value) 리스트로 리턴&lt;br /&gt;
# D.has_key(key) : 멤버십 테스트. D가 key를 가지고 있는가 검사. 있으면 참(1),  없으면 거짓(0)을 리턴.&lt;br /&gt;
                    key in D 와 같다.&lt;br /&gt;
# D.clear() : 사전 D의 모든 아이템 삭제&lt;br /&gt;
# D.copy() : 사전 복사 &lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; a = d  # 사전 레퍼런스 복사. (사전 객체는 공유된다)&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; a = d.copy()  # 사전 복사.  (별도의 사전 객체가 마련된다.)&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; phone = {&amp;#039;jack&amp;#039;: 232412, &amp;#039;jim&amp;#039;:1111, &amp;#039;Joseph&amp;#039; : 234632}&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; p = phone&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; phone[&amp;#039;jack&amp;#039;] = 1234&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; phone&lt;br /&gt;
 {&amp;#039;jack&amp;#039;: 1234, &amp;#039;jim&amp;#039;:1111, &amp;#039;Joseph&amp;#039; : 234632}&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; p&lt;br /&gt;
 {&amp;#039;jack&amp;#039;: 1234, &amp;#039;jim&amp;#039;:1111, &amp;#039;Joseph&amp;#039; : 234632}&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ph = phone.copy()&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; phone[&amp;#039;babo&amp;#039;] = 5324&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; phone&lt;br /&gt;
 {&amp;#039;jack&amp;#039;: 1234, &amp;#039;jim&amp;#039;:1111, &amp;#039;Joseph&amp;#039; : 234632, &amp;#039;babo&amp;#039; : 5324}&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ph&lt;br /&gt;
 {&amp;#039;jack&amp;#039;: 1234, &amp;#039;jim&amp;#039;:1111, &amp;#039;Joseph&amp;#039; : 234632}&lt;br /&gt;
# D.get(key , x) : 값이 존재하면 D&amp;amp;#91;key&amp;amp;#93; 즉 값을 리턴, 아니면 x를 리턴&lt;br /&gt;
# D.setdefalut(key , x) : get 과 같으나 값이 존재하지 않을 때 값을 설정  (D&amp;amp;#91;key&amp;amp;#93; = x)&lt;br /&gt;
# D.update(b) : for k in b.keys(): D&amp;amp;#91;k&amp;amp;#93;=b&amp;amp;#91;k&amp;amp;#93; 즉, 사전 b의 아이템들을 D에 추가시킨다.&lt;br /&gt;
# D.popitem() : (키, 값) 튜플을 리턴하고 사전에서 항목을 제거한다.&lt;br /&gt;
&lt;br /&gt;
== 사전을 for문으로 참조하기 ==&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; D = {&amp;#039;a&amp;#039;:1, &amp;#039;b&amp;#039;:2 ,&amp;#039;c&amp;#039;:3}&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; for key in D.keys():&lt;br /&gt;
         print key, D[key]&lt;br /&gt;
 &lt;br /&gt;
 b 2 &lt;br /&gt;
 c 3&lt;br /&gt;
 a 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 정렬하기&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; items = D.items()&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; items.sort()&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; items&lt;br /&gt;
 [(&amp;#039;a&amp;#039;, 1), (&amp;#039;b&amp;#039;, 2) , (&amp;#039;c&amp;#039;, 3)]&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; for k,v in items:&lt;br /&gt;
         print k, v&lt;br /&gt;
 &lt;br /&gt;
 a 1&lt;br /&gt;
 b 2&lt;br /&gt;
 c 3&lt;br /&gt;
&lt;br /&gt;
* 2.2 이상에서 가능&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; D = {&amp;#039;a&amp;#039;:1, &amp;#039;b&amp;#039;:2, &amp;#039;c&amp;#039;:3}&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; for key in D:&lt;br /&gt;
         print key, D[key]&lt;br /&gt;
 &lt;br /&gt;
 a 1 &lt;br /&gt;
 c 3&lt;br /&gt;
 b 2&lt;br /&gt;
&lt;br /&gt;
== 심볼 테이블 ==&lt;br /&gt;
&lt;br /&gt;
globals()를 사용하면 전역 영역(모듈 영역)의 심볼 테이블(사전)을 얻는다.&lt;br /&gt;
----&lt;br /&gt;
[[2학기파이선스터디]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>