iT邦幫忙

2021 iThome 鐵人賽

DAY 3
0
自我挑戰組

一個月的演算法挑戰系列 第 3

Day03:資料結構 - 列表(List)

什麼是資料結構?

前一天有提到空間複雜度(Space Complexity),簡單的複習一下,空間複雜度指的是記憶體的使用效率。今天開始談到的資料結構,是可以有效改善記憶體使用效率的方法之一。常見的資料結構如下:

  1. 列表(List)
  2. 陣列(Array)
  3. 堆疊(Stack)
  4. 佇列,又稱隊列(queue)
  5. 雜湊表(Hash Table)
  6. 堆積(Heap)
  7. 二元搜尋樹(binary search tree)

今天來點,列表(List)

列表分為兩種,一種是有序列表,一種為無序列表。列表特性是使用線性搜尋的方式進行查找,所以會相對其他資料結構較慢一點點,不過這當然取決於你對程式所下的指令。列表的空間複雜度取決於列表的長度,這裡還是以Big O來表示,n為列表大小,因此一個列表的空間複雜度可以寫為O(n)。

接下來,來看看列表長什麼樣子:

#列表內部可以放數字、字串、數字+字串...
List1 = [1, 2, 3, 4, 5]
List2 = ["a", "b", "c", "d", "e"]
List3 = ["dog", "cat", 100, 1000]

# 也可以對列表進行增加、修改等等的操作

List4 = List1.copy()
List1.extend(List2) #用新列表擴展原本列表
print(f"擴增後的列表為:{List1}")
print(f"複製後的列表為:{List4}") 

輸出結果如下:

擴增後的列表為:[1, 2, 3, 4, 5, 'a', 'b', 'c', 'd', 'e']
複製後的列表為:[1, 2, 3, 4, 5]

列表是一種很好運用的資料結構,也相對的容易理解,下列來看看列表的迴圈運用:

#這是一組簡單的程式碼,用來玩剪刀石頭布
rock = '''
    _______
---'   ____)
      (_____)
      (_____)
      (____)
---.__(___)
'''

paper = '''
    _______
---'   ____)____
          ______)
          _______)
         _______)
---.__________)
'''

scissors = '''
    _______
---'   ____)____
          ______)
       __________)
      (____)
---.__(___)
'''

#將三組變數放入到列表中,再調用隨機的方式進行遊戲
game_image = [rock,paper,scissors]
user_chose = int(input("What do you choose? Type 0 for Rock, 1 for Paper or 2 for Scissors.\n"))
print(game_image[user_chose])

import random
company_chose = random.randint(0,2)
print(game_image[company_chose])

#列表的for循環
for i in range:
  i +=1
  if user_chose >=3 or user_chose <0:
    print("You type is error.You lose!")
  elif user_chose == 0 and company_chose == 1:
    print("You Win!")
  elif user_chose == 0 and company_chose == 2:
    print("You lose!")
  elif user_chose > company_chose:
    print("You win!")   #win
  elif user_chose < company_chose:
    print("You lose!")  #lose
  elif computer_choice == user_choice:
    print("It's a draw")
print (i)

Python官方網站中有列表的進一步操作,很容易上手的操作,配上簡單的小遊戲,可以更容易了解列表這種資料結構。想進一步了解的人可以參考下列資訊:

https://docs.python.org/zh-tw/3/tutorial/datastructures.html


上一篇
Day02:空間複雜度
下一篇
Day04:資料結構 - 陣列(Array)
系列文
一個月的演算法挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言