[210710 TIL] Python

Choi Rimยท2021๋…„ 7์›” 10์ผ
0

Python

๋ชฉ๋ก ๋ณด๊ธฐ
9/20
post-thumbnail

tuple

  • tuple์€ list์™€ ๋น„์Šทํ•˜์ง€๋งŒ ํ•œ๋ฒˆ ์„ ์–ธ๋˜๋ฉด ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค.
  • Tuple์€ ์ผ๋ฐ˜์ ์œผ๋กœ 2๊ฐœ์—์„œ 5๊ฐœ ์‚ฌ์ด์˜ ์š”์†Œ๋“ค์„ ์ €์žฅํ• ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ, ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ad hoc(์ฆ‰์„์ ์œผ๋กœ) ํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์„๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
  • List๋Š” ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์—ฌ๋Ÿฌ ์ˆ˜์˜ ์š”์†Œ๋“ค์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๊ธฐ๋•Œ๋ฌธ์— tuple๋ณด๋‹ค ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ๋” ํฌ๋‹ค.
    • ๋” ๋งŽ์€ ๊ธฐ๋Šฅ๊ณผ flexibility๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด์ฉ” ์ˆ˜ ์—†์ด ์šฉ๋Ÿ‰์ด ์ปค์ง€๋Š”๊ฒƒ์ด๋‹ค.
    • ํ•˜์ง€๋งŒ tuple์€ ์ œํ•œ์ ์ธ ๋งŒํผ ์šฉ๋Ÿ‰์ด ๋” ์ ๋‹ค. ๊ทธ๋ž˜์„œ ์ˆ˜์ •์ด ํ•„์š”์—†๊ณ  ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ• ๋•Œ๋Š” tuple์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ํ›จ์”ฌ ๋” ํšจ๊ณผ์ ์ด๋‹ค.

set

  • set์€ list์˜ ์นœ์ฒ™์ด๋‹ค
    • list์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ์š”์†Œ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • list์™€ ๋‹ค๋ฅธ ์ 
    • List์™€ ๋‹ค๋ฅด๊ฒŒ ์š”์†Œ๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.
      • ์ฆ‰ ordering์ด ์—†๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ for ๋ฌธ์—์„œ ์ฝ์–ด๋“ค์ผ๋•Œ ์š”์†Œ๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์˜ค๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฌด์ž‘์œ„ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์˜จ๋‹ค.
    • ์ˆœ์„œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ indexing๋„ ์—†๋‹ค. ๋ช‡๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ฝ์–ด๋“ค์ด๊ฑฐ๋‚˜ ํ•  ์ˆ˜ ์—†๋‹ค.
    • ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์š”์†Œ๊ฐ€ 1๊ฐœ ์ด์ƒ ์กด์žฌ ํ•  ์ˆ˜ ์—†๋‹ค.
      • ์ฆ‰ ์ค‘๋ณต๋œ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค.
      • ๋งŒ์ผ ์ƒˆ๋กœ ์ €์žฅํ•˜๋ ค๊ณ  ํ•˜๋Š” ์š”์†Œ์™€ ๋™์ผํ•œ ๊ฐ’์˜ ์š”์†Œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์š”์†Œ๊ฐ€ ์ด ์ „ ์š”์†Œ๋ฅผ ์น˜ํ™˜(replace)ํ•œ๋‹ค.

set ์ƒ์„ฑํ•˜๋Š” ๋ฒ•

set1 = {1, 2, 3}
set2 = set([1, 2, 3])
  • ์ค‘๊ด„ํ˜ธ ์‚ฌ์šฉํ•˜๊ธฐ { }
  • set( ) ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
    • set( ) ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” list๋ฅผ parameter๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค.
    • ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ set() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ set๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ๋Š” list๋ฅผ set๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
set1 = {1, 2, 3, 1}
print(set1)
 
> {1, 2, 3}
 
set2  = set([1, 2, 3, 1])
print(set2)
 
> {1, 2, 3}
  • set์—๋Š” ์ค‘๋ณต๋œ ๊ฐ’์ด ์ €์žฅ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์— ์ €์žฅํ•œ ๊ฐ’๋งŒ ๋‚จ๋Š”๋‹ค.

set์—์„œ ์ƒˆ๋กœ์šด ์š”์†Œ ์ถ”๊ฐ€ํ•˜๊ธฐ

  • set์€ list์™€ ๋‹ฌ๋ฆฌ ์š”์†Œ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ถ”๊ฐ€๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ–ˆ๋‹ค.
    • ๊ทธ๋ž˜์„œ set์€ append ๋Œ€์‹  add๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
my_set = {1, 2, 3}
my_set.add(4)
print(my_set)
 
> {1, 2, 3, 4}

set์—์„œ ์ƒˆ๋กœ์šด ์š”์†Œ ์‚ญ์ œํ•˜๊ธฐ

  • set์—์„œ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ๋Š” remove๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
my_set = {1, 2, 3}
my_set.remove(3)
print(my_set)
 
> {1, 2}

Look up

  • set์— ์š”์†Œ๊ฐ€ ๋“ค์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ look up์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • set์—์„œ look up์„ ํ•  ๋•Œ๋Š” in ์„ ์‚ฌ์šฉํ•œ๋‹ค.
>>> set = {1, 2, 3, 4}
>>> if 1 in set:
	print(1)

	
1

๊ต์ง‘ํ•ฉ, ํ•ฉ์ง‘ํ•ฉ (Intersection, Union)

>>> set1 = {1, 2, 3, 4, 5}
>>> set2 = {2, 4, 5, 6, 7}
>>> print(set1 & set2)
{2, 4, 5}
>>> print(set1.intersection(set2))
{2, 4, 5}
  • ์ง‘ํ•ฉ์€ & ํ‚ค์›Œ๋“œ ํ˜น์€ intersection() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
>>> set1 = {1, 2, 3, 4, 5}
>>> set2 = {2, 4, 5, 6, 7}
>>> print(set1 | set2)
{1, 2, 3, 4, 5, 6, 7}
>>> print(set1. union(set2))
{1, 2, 3, 4, 5, 6, 7}
  • ํ•ฉ์ง‘ํ•ฉ์€ | ํ‚ค์›Œ๋“œ ํ˜น์€ union ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

๋นˆ set์„ ๋งŒ๋“ค๋ ค๋ฉด?

  • empty set์„ ์œ„ํ•œ literal syntax๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— empty set์„ ๋งŒ๋“ค๋ ค๋ฉด ๊ทธ๋ƒฅ set() ํ•˜๋ฉด ๋œ๋‹ค.

๋”•์…”๋„ˆ๋ฆฌ

  • Dictionary ์—์„œ element๋ฅผ ์ฝ์–ด ๋“ค์ด๋Š” ๋ฐฉ๋ฒ•์€ list์™€ ์œ ์‚ฌํ•˜๋‹ค.
    • List์™€ ์ฐจ์ด์ ์€ ์š”์†Œ์˜ index๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ key ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.
hr_information = {"์ด๋ฆ„":"์ตœํ˜œ๋ฆผ", "๋‚˜์ด":23, "ํ‚ค":164}

hr_information["์ด๋ฆ„"]
  • key๋Š” ๋ฌธ์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ˆซ์ž๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • key๊ฐ’์€ ์ค‘๋ณต๋  ์ˆ˜ ์—†๋‹ค.
    • ๋งŒ์•ฝ ์ค‘๋ณต๋œ๋‹ค๋ฉด ๋‚˜์ค‘์— ์˜จ key๊ฐ’์ด ๊ธฐ์กด์˜ key๊ฐ’์„ ๋Œ€์‹ ํ•œ๋‹ค.

Set ๊ณผ Dictionary ์˜ ์ฐจ์ด

  • List์™€ ๋‹ค๋ฅด๊ฒŒ ์š”์†Œ๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.
    • ์ฆ‰ ordering์ด ์—†๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ for ๋ฌธ์—์„œ ์ฝ์–ด๋“ค์ผ๋•Œ ์š”์†Œ๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์˜ค๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฌด์ž‘์œ„ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์˜จ๋‹ค.
    • ์ˆœ์„œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ indexing๋„ ์—†๋‹ค. ๋ช‡๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ฝ์–ด๋“ค์ด๊ฑฐ๋‚˜ ํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์š”์†Œ๊ฐ€ 1๊ฐœ ์ด์ƒ ์กด์žฌ ํ•  ์ˆ˜ ์—†๋‹ค.
    ์ฆ‰ ์ค‘๋ณต๋œ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค.
    • ๋งŒ์ผ ์ƒˆ๋กœ ์ €์žฅํ•˜๋ ค๊ณ  ํ•˜๋Š” ์š”์†Œ์™€ ๋™์ผํ•œ ๊ฐ’์˜ ์š”์†Œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์š”์†Œ๊ฐ€ ์ด ์ „ ์š”์†Œ๋ฅผ ์น˜ํ™˜(replace)ํ•œ๋‹ค.

List ์™€ Tuple ์˜ ์ฐจ์ด

  • tuple์€ list์™€ ๋น„์Šทํ•˜์ง€๋งŒ ํ•œ๋ฒˆ ์„ ์–ธ๋˜๋ฉด ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค.
  • Tuple์€ ์ผ๋ฐ˜์ ์œผ๋กœ 2๊ฐœ์—์„œ 5๊ฐœ ์‚ฌ์ด์˜ ์š”์†Œ๋“ค์„ ์ €์žฅํ• ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ, ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ad hoc(์ฆ‰์„์ ์œผ๋กœ) ํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์„๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
  • List๋Š” ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์—ฌ๋Ÿฌ ์ˆ˜์˜ ์š”์†Œ๋“ค์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๊ธฐ๋•Œ๋ฌธ์— tuple๋ณด๋‹ค ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ๋” ํฌ๋‹ค.
    • ๋” ๋งŽ์€ ๊ธฐ๋Šฅ๊ณผ flexibility๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด์ฉ” ์ˆ˜ ์—†์ด ์šฉ๋Ÿ‰์ด ์ปค์ง€๋Š”๊ฒƒ์ด๋‹ค.
    • ํ•˜์ง€๋งŒ tuple์€ ์ œํ•œ์ ์ธ ๋งŒํผ ์šฉ๋Ÿ‰์ด ๋” ์ ๋‹ค. ๊ทธ๋ž˜์„œ ์ˆ˜์ •์ด ํ•„์š”์—†๊ณ  ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ• ๋•Œ๋Š” tuple์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ํ›จ์”ฌ ๋” ํšจ๊ณผ์ ์ด๋‹ค.

for๋ฌธ

  • for ๋ฌธ์—์„œ๋Š” ๋ฆฌ์ŠคํŠธ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์š”์†Œ์˜ ์ˆ˜ ๋งŒํผ for ๋ฌธ์— ์†ํ•ด์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
    • ์ด๊ฑธ iteration ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋งŒ์ผ ๋ฆฌ์ŠคํŠธ๊ฐ€ 5๊ฐœ์˜ ์š”์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด 5 iterations ์ด๋ผ๊ณ  ํ•œ๋‹ค.
for i in range(4):
	print(i)

break

continue

profile
https://rimi0108.github.io/

0๊ฐœ์˜ ๋Œ“๊ธ€