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


<<:  Day 3 - 试试 Tailwind CLI

>>:  Day3 : 从 Hello World 看 Golang

Day.29 其他树的介绍

树有非常多变型,下面是Wiki的截图 以下简单介绍几种常听到的~ AVL Trees、Red Bla...

【Day 06】- 听说 F12 可以拿来骇入小恐龙? (网页开发工具分析流量)

前情提要 前一篇文章带大家看了 Python 中字串的原生操作以及正规表达式的操作,这两个对於爬虫的...

[第十三只羊] 迷雾森林舞会VI devise登入

天亮了 昨晚是平安夜 关於迷雾森林故事 焦虑抑制剂 10号:哈罗大家好,我是海马诚实小君,其实原本一...

Vue.js 从零开始:v-model

表单类型是网页很常见的呈现方式,表单元素有文字框<input>、<textarea...

Day 14 AWS云端实作起手式第四弹 图文档案与程序码备份与URL重写

今天简单看一下如何设定CloudFront和做图文档和程序码备份 步骤 9 设定CloudFront...