最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

python基础知识:字典、元组、集合

XAMPP案例 admin 242浏览 0评论
Python中一共有六种数据类型。
前面我们已经介绍了Python中的数字、字符串、列表
今天我们对另外的几种数据类型做一个探究。
None
None对象用于表示缺省值。
它有点类似其他编程语言的null。
与其他”空值”(例如0,[], 空字符串)一样,当它被转换为布尔变量时,它为False。在Python控制台输入时,它显示为空字符串。
For example:
>>> None == None
True
>>> None
>>> print(None)
None
Tips : None对象由未显示返回任何其他内容的任何函数返回
For example:
def some_func():
    print("Hi")


var = some_func()  # Hi
print(var)  # None

字典(Dictionaries)

字典是用于将任意映射到的数据结构。

可以将列表视为在一定范围内具有整数键的字典。

可以使用包含关键字的方括号,以与列表相同的方式为字典建立索引。

注意:

  • 列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
  • 字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
  • 键(key)必须使用不可变类型,且在同一个字典中,键(key)必须是唯一的。

For example:

age = {"Dave": 24, "Mary": 42, "John": 58}
print(age["Dave"])
print(age["Mary"])

尝试索引不属于字典的键会返回KeyError。

For example:

primary = {
    "red": [255, 0, 0],
    "green": [0, 255, 0],
    "blue": [0, 0, 255],
}

print(primary["red"])
print(primary["yellow"])

Tips:我们可以使用 { } 定义一个空字典。

不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

 

- 同列表类似,字典的键可以被设置为不同的值。但是,与列表不同的是们还可以为新的字典键分配一个值,而不是已经在的key。

For example:

squares = {1: 1, 2: 4, 3: "error", 4: 16}
squares[8] = 64
squares[3] = 9
print(squares)

- 要确定某个键是否在字典中,可以使用in 或者not in, 就像在列表中使用它们一样

nums = {
    1: "one",
    2: "two",
    3: "three"
}
print(1 in nums)
print("three" in nums)
print(4 not in nums)

- 一个有用的字典方法是get()。它的作用与建立索引的作用相同,但是如果在字典中未找到该键,它将返回另一个指定的值(默认情况下为”None“)。

For example:

paris = {
    1: "apple",
    "orange": [2, 3, 4],
    True: False,
    None: "True"
}
print(paris.get("orange"))
print(paris.get(7))
print(paris.get(12345, "not in dictiocary"))

 e044

元组(Tuples)

元组与列表非常相似,只不过它们是不可变的(不能更改)。而且,它们是使用括号而不是方括号来创建。

For example:

words = ("spam", "eggs", 'sausages')

您可以使用它们的索引访问元组中的值,就和访问列表是一样的。

print(words[0])

Tips:元组是不可更改的,尝试在元组中重新分配值会导致TypeError。

words[1] = "cheese"

e0044

Tips: 与列表和字典一样,元组也是可以嵌套使用的。

通过逗号分隔值,可以创建不带括号的元组

For example:

my_tuple = "one", "two", "three"
print(my_tuple[0])

Tips:一个空元组可以通过一个括号被创建

tpl = ()

值得一提的是,创建一个只有一个元素的元组时你应该记得添加逗号!!!

my_tuple = (1)
print(type(my_tuple))
my_tuple = (1,)
print(type(my_tuple))

e00044

注:元组比列表更快,但是它们不能被改变。

集合(Sets)

集合,类似于列表或字典。它们使用花括号或set函数创建。它们与列表共享一些功能,例如使用in检查它们是否包含特定项目。

num_set = {1, 2, 3, 4, 5}
word_set = set(["spam", "eggs", "sausage"])

print(3 in num_set)
print("spam" not in word_set)

Tips:创建一个空集合,你必须使用set(),因为{}是用来创建空字典的

  • 集合在某些方面与列表有所不同,但共享多个列表操作,例如len。
  •  它们是无序的,这意味着它们不能被索引。
  •  它们不能包含重复的元素。
  •  由于它们的存储方式,检查项目是否属于集合而不是列表是更快的。
  •  不要使用append来添加到集合中,而要使用add。
  •  方法remove从集合中删除特定元素;  pop删除任意元素。

e000044

一些经验:

正如我们在前面的内容中看到的那样,Python支持以下数据结构:列表,字典,元组,集合。

何时使用字典

  •  当您需要key:value对之间的逻辑关联时。
  •  当您需要基于自定义键快速查找数据时。
  •  不断修改您的数据时。请记住,字典是可变的。

 何时使用其他类型:

  • 如果您有不需要随机访问的数据集合,请使用列表。当您需要一个经常修改的简单且可迭代的集合时,请尝试选择列表。
  •  如果您需要元素的唯一性,请使用一组。
  •  当数据无法更改时,请使用元组。
  • 很多时候,元组与字典结合使用,例如,一个元组可能代表一个键,因为它是不可变的。

e0000044

列表推导式(List Comprehensions)

列表推导式(列表理解、内涵)是快速创建内容遵循简单规则的列表的有用方法。

For example:

cubes = [i ** 3 for i in range(5)]
print(cubes)

列表推导式还可以包含if语句,以对列表中的值强制执行条件。

For example:

evens = [i ** 2 for i in range(10) if i ** 2 % 2 == 0]
print(evens)

Tips:尝试在范围很广的列表中创建列表会导致MemoryError

For example:

evens = [i * 2 for i in range(10 ** 100)]
print(evens)

使用生成器(generators)可以解决这个问题,我们将会在下一篇讨论生成器的内容。当然,除了列表推导我们还有字典推导,都将在后面的内容一一呈现。

 

写在最后

本节给大家介绍了Python语法中的字典、元组、集合、推导式等重点内容。是实际应用中的高频语法!!!我无意再去制作一本工具书,里面分享了一些自己的经验。希望大家珍惜时间,在最短的时间内把核心掌握。勤能补拙是良训,希望大家还是动手做一做,有问题可以私信我,欢迎交流和提出您的宝贵意见。

你要偷偷学Python,然后惊艳所有人。

转载请注明:XAMPP中文组官网 » python基础知识:字典、元组、集合