Day05 - Python基本语法 Part 2,关於「集合」

接续昨天的基本语法,今天将主要集中在「集合」的内容整理。
范例程序主要来自於W3Schools

集合

Python中四种集合,以下为四种集合的简单比较:

类型 是否有顺序(注1) 内容是否可改变 内部元素是否可重复
List Y Y Y
Tuple Y N Y
Set N N(注2) N
Dictionary Y(注3) Y N(注4)

注1:有顺序意味着可以使用index进行存取。
注2:Set内部元素不可直接修改,但可以新增和删除。
注3:Python 3.7後才有顺序性,Python 3.6前都是无顺序性。
注4:内部元素重复出现时系统不会报错,但是会以「後盖前」的方式设定数值。

List

  • 建立List
mylist1 = ["apple", "banana", "cherry"]
mylist2 = list(("apple", "banana", "cherry"))
  • 使用index改变List内的元素
note = "改变的元素数量 {} 指派的元素数量: {}"

# 改变的元素数量 = 指派的元素数量
thislist = ["apple", "banana", "cherry", "orange"]
thislist[1:3] = ["blackcurrant", "watermelon"]
print(note.format("=", thislist))

# 改变的元素数量 < 指派的元素数量
thislist = ["apple", "banana", "cherry", "orange"]
thislist[1:2] = ["blackcurrant", "watermelon"]
print(note.format("<", thislist))

# 改变的元素数量 > 指派的元素数量
thislist = ["apple", "banana", "cherry", "orange"]
thislist[1:3] = ["blackcurrant"]
print(note.format(">", thislist))

Output:

改变的元素数量 = 指派的元素数量: ['apple', 'blackcurrant', 'watermelon', 'orange']
改变的元素数量 < 指派的元素数量: ['apple', 'blackcurrant', 'watermelon', 'cherry', 'orange']
改变的元素数量 > 指派的元素数量: ['apple', 'blackcurrant', 'orange']
  • 插入元素:list.insert(index, value)
thislist = ["apple", "banana", "cherry", "orange"]
thislist.insert(2,"blackcurrant")
print(thislist)
  • 新增元素:list.append(value)
thislist = ["apple", "banana", "cherry", "orange"]
thislist.append("blackcurrant")
print(thislist)
  • 将另一个集合(型态不限定为List)合并到目前的List:extend(anotherList)
# 合并两个list (使用extend)
thislist = ["apple", "banana", "cherry", "orange"]
otherlist = ["blackcurrant", "pineapple"]
thislist.extend(otherlist)
print(thislist)

# 合并两个list (使用 + )
thislist = ["apple", "banana", "cherry", "orange"]
otherlist = ["blackcurrant", "pineapple"]
finallist = thislist + otherlist
print(finallist)

# 合并tuple到list
thislist = ["apple", "banana", "cherry", "orange"]
othertuple = ("blackcurrant", "pineapple")
thislist.extend(othertuple)
print(thislist)
  • 删除元素
  1. list.remove(value):根据元素数值删除。
  2. list.pop(index):根据index删除。
  3. del list[index]:根据index删除。
  4. list.pop():从最後一个删除。
  5. list.clear():清空List内所有元素,但List本身仍存活。
  6. del list[index]:根据index删除。
  7. del list:删除整个List,删除後List本身即不存在。
  • 排序
  1. list.sort():预设为正序排列。
  2. list.sort(reverse = true):倒序排列。
  3. list.reverse():反转排列。
  4. list.sort(key = function):根据自定义的function做排序。
# 无视大小写进行排序
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.sort(key = str.lower)
print(thislist)

Tuple

  • 建立Tuple
mytuple1 = ("apple", "banana", "cherry")
mytuple2 = tuple(("apple", "banana", "cherry"))

# 建立仅含单一元素的tuple
mytuple3 = ("apple",)
  • 改变Tuple:Tuple本身不可变动,但可藉由将Tuple转换成List进行变动後再重新转换回Tuple以达到目的。

  • 计算Tuple内特定元素出现的次数:tuple.count(value)

thistuple = ["apple", "banana", "apple", "orange"]
print(thistuple.count("apple"))
  • 回传Tuple内特定元素出现的第一个位置:tuple.index(value)
thistuple = ["apple", "banana", "apple", "orange"]
print(thistuple.index("apple"))

Set

  • 建立Set
myset1 = {"apple", "banana", "cherry"}
myset2 = set(("apple", "banana", "cherry"))

# 建立仅含单一元素的tuple
mytuple3 = ("apple",)
  • 因没有index,故想要找到特定元素只能透过回圈的方式寻找。
thisset = {"apple", "banana", "cherry"}

# 印出set内所有元素
for x in thisset:
  print(x)

# 判断banana是否存在set
print("banana" in thisset)
  • Set内部的元素不可被改变,但可以新增与删除。
    • 新增
    1. set.add(value):新增单一元素。
    2. set.update(collection):合并其他集合 (不限定为Set)。
    3. set.union(otherset):回传一个新的Set,其为原本Set合并其他Set (不能为其他种型态的集合)。
    • 删除
    1. set.remove(value):删除元素,该元素不存在於set时「会」回传error。
    2. set.discard(value):删除元素,该元素不存在於set时「不会」回传error。
    3. set.pop():删除最後一个元素,但因Set不存在顺序,故无法预期被删除的元素为何。
    4. set.clear():清空Set内所有元素,但Set本身仍存活。
    5. del set:删除整个Set,删除後Set本身即不存在。

Dictionary

  • 建立Dictionary
dict = {
  "id":1,
  "name":"Alice",
  "age":25
}
print(dict)
  • 存取特定元素
  1. dict["keyname"]
  2. dict.get("keyname")
  • 取得Dictionary中所有元素的名称:dict.keys()

  • 取得Dictionary中所有元素数值:dict.values()

  • 新增元素/ 变更原有元素数值

  1. dict["keyname"] = value
  2. dict.update(dictionary)
dict = {
  "id":1,
  "name":"Alice",
  "age":25
}

dict["age"] = 27
print(dict)

dict.update({"age":24})
print(dict)
  • 删除元素
  1. dict.pop("keyname"):移除特定元素
  2. dict.popitem():移除最後一个元素
  3. del dict["keyname"]:移除特定元素
  4. del dict:删除整个Dictionary
  5. dict.clear():清空Dictionary

<<:  单位的责任分级

>>:  DAY02 - 前端工程师的工作日常

Day 8. 版控很重要!

在遥远的远古时期,专案的程序码都是丢到网路芳邻上时,大家都是用资料夹在做备份跟还原,如果多人开发同个...

Day9# Function 及 Function Receiver

终於来到了第九天,今天要再更深入介绍函式(Function)以及 Function Receiver...

第41天~这里就是把我觉得不错的范例来练习一下

这篇的上一篇:https://ithelp.ithome.com.tw/articles/10283...

pug 基础介绍(2) DAY100

Jade 汇入外部 JSON 资料内容 这里我们先自行新增2份 jaon档 **menu.json*...

学习Python纪录Day9 - 字串及常用的字串处理函数

字串 使用单引号「」和双引号「」括起 建立和输出字串 python可以用指定叙述或str()建立参数...