Python学习笔记(三)组合数据类型

Python之组合数据类型 一系列的按特定顺序排列的元素组成ps:(1)是Python中内置的可变序列(2)在Python中使用[ ]定义列表,元素与元素之间使用英文的逗号分隔(3)列表中的元素最多,可混装,数据有序存储,允许有重复元素(与列表类似)ps:(1)是Python中内置的不可变序列(2)在Python中使用( )定义元组,元素与元素之间使用英文的逗号分隔(3)元组中只有一个元素的时候,逗号也不能省略(4)元组中的元素可混装,数据有序存储,允许有重复元素。 阅读详情

“Life is short, You need Python” – Bruce Eckel

Environment

  • OS: macOS Mojave
  • Python version: 3.7
  • IDE: Jupyter Notebook

0. 写在前面

Python 中的数据类型可分为基本数据类型和组合数据类型,基本数据类型包括整型、浮点型、复数类型、字符串、布尔类型,组合数据类型包括列表、元组、字典、集合,其中还有更细的分类,如整型包括不同进制,字典包括有序和无序等。本文记录了组合数据类型的常用操作、解析式以及一些底层实现的内容。

1. 列表

  • 使用方括号表示
  • 可以包含各种类型的变量
  • 序列类型
  • 可变的(可以增加、删除、修改)

1.1 创建

  • 直接用方括号定义
ls = [[True, False], 1, {'type': 'list', 'name': 'hello'}]
empty_list = [] # an empty list
  • 用 list(iterable=()) ,传入可迭代对象
list('string') # ['s', 't', 'r', 'i', 'n', 'g']
list(range(5)) # [0, 1, 2, 3, 4]
  • 列表生成式
ls = [i for i in range(5)]
print(ls) # [0, 1, 2, 3, 4]

1.2 访问

  • 索引
ls = [9, 5, 2, ['legal', 'healthy'], 7]
print(ls[0]) # 9
print(ls[-2]) # ['legal', 'healthy']
print(ls[3][0]) # legal

# 通过索引修改元素
ls[3] = 0
print(ls) # [9, 5, 2, 0, 7]
  • 切片,将返回新的列表对象
ls = [9, 5, 2, ['legal', 'healthy'], 7]

print(ls[1:3]) # 表示从ind=1 开始到ind=2,不包括ind=3
# [5, 2]

print(ls[:3]) # 从头开始到索引 2
# [9, 5, 2]

print(ls[3:]) # 从索引 3 开始到最后
# [['legal', 'healthy'], 7]

print(ls[:]) # 得到整个列表,是常用的列表拷贝方法
# [9, 5, 2, ['legal', 'healthy'], 7]

print(ls[1::2]) # 步长为 2
# [5, ['legal', 'healthy']]

print(ls[-1:-4:-2]) # 反向索引
# [7, 2]

print(ls[::-1]) # 得到反序排列的新列表对象
# [7, ['legal', 'healthy'], 2, 5, 9]

1.3 修改

  • list.append(object) 在列表末尾加上一个元素
ls = [9, 5, 2, ['legal', 'healthy']]
ls.append(7)
print(ls) # [9, 5, 2, ['legal', 'healthy'], 7]
  • list.extend(iterable) 在列表末尾加上多个元素
ls = [9, 5, 2, ['legal', 'healthy'], 7]
ls.extend(['a', 'b', 3])
print([9, 5, 2, ['legal', 'healthy'], 7, 'a', 'b', 3])
  • list.insert(index, object) 向列表指定位置插入元素,从该位置开始的元素向后移一个位置
ls = [9, 5, 2, ['legal', 'healthy'], 7]
ls.insert(3, 0)
print(ls) # [9, 5, 2, 0, ['legal', 'healthy'], 7]
  • list.pop(index=-1) 弹出指定索引的元素
ls = [9, 5, 2, ['legal', 'healthy'], 7]
ls.pop(-2) # ['legal', 'healthy']
print(ls) # [9, 5, 2, 7]
  • list.remove(value) 从列表中删除指定元素,传入需要删除的元素。对于重复元素,调用一次只删除索引最小的那一个。好又快地需要删除所有重复元素,可以使用迭代结构结合反向索引,参考Python基础(四)控制结构中for迭代的例子。
ls = [1, 1, 1, 1, 0, 0, 1]

ls.remove(1)
print(ls)
# [1, 1, 1, 0, 0, 1]
  • list.clear() 清空列表中的元素,使原列表对象称为空列表
ls = [9, 5, 2, ['legal', 'healthy'], 7]
ls.clear()
print(ls)

1.4 常用操作符

  • 拼接 + ,连接两个列表,效果等价于 list.extend(iterable) 方法,但拼接返回连接后产生的新列表对象。总是首选使用 extend 方法而不是拼接 + 。
ls = [9, 5, 2] + [['legal', 'healthy'], 7]
print(ls) # [9, 5, 2, ['legal', 'healthy'], 7]
  • * 重复
ls = [1, 2, 'a'] * 3
print(ls) # [1, 2, 'a', 1, 2, 'a', 1, 2, 'a']

注意,使用 * 创建多维列表可能出现 bug!

例 使用 * 创建一个 4 x 3 的二维列表将失败

ls = [[0] * 3] * 4
ls
# [[0, 0, 0]
#  [0, 0, 0]
#  [0, 0, 0]
#  [0, 0, 0]]

# 改变 0, 0 为止的元素,却造成所有第一行元素的改变
ls[0][0] = 1
ls
# [1, 0, 0]
# [1, 0, 0]
# [1, 0, 0]
# [1, 0, 0]

原因是 ls * n 是将 n 份列表对象的浅拷贝连接(深浅拷贝问题参考Python基础(十) Part 1)。解决方法为,改用列表解析式(本文 Part 5.1)。

  • 关系操作符,对第一个元素进行比较
list1 = [1, 2, 3]
list2 = [4, 1, 3]
print(list1 > list2) # False

list3 = ['a', 'b', 'c']
print(list1 > list3) # 报错 TypeError
  • 成员资格符 in
ls = [123, ['xyz', 666], 456]
print(123 in ls) # True
print('xyz' in my_list) # False,因只能判断一级对象
print('xyz' not in my_list) # True
print('xyz' in my_list[-2]) # True

1.5 其他常用方法

  • list.count(value) 返回列表中某一元素值出现的次数
ls = [123, 456] * 6
print(ls.count(123)) # 6
  • list.index(value, start=0, stop=9223372036854775807) 返回待查找元素值在列表中第一次出现位置的索引,注意查找范围不包括 stop 索引
ls = [123, 456, 789, 123, 'abc', 123]
print(ls.index(123)) # 0
print(ls.index(123, -2)) # 5
print(ls.index(123, 1, 4)) # 3
print(ls.index(123, 1, 3) # 若没有该值的元素,则报错ValueError
  • list.reverse() 将列表对象倒序
ls = [9, 5, 2, ['legal', 'healthy'], 7]
ls.reverse()
print(ls) # [7, ['legal', 'healthy'], 2, 5, 9]
  • list.sort(*, key=None, reverse=False) 将原列表对象按元素排序(默认为升序),支持仅包含 int 和(或) float 类型元素的列表,支持仅包含 int 和(或) float 类型元素的列表
ls.sort(reverse=True)
print(ls) # [93, 78, 58.0, 23.0, 15]
  • list.copy() ,和切片复制等价,均为浅拷贝
ls = [0, 1, [2, 3], 4]
ls_slide_copy = ls[:]
ls_copy = ls.copy()
print(id(ls), id(ls_slide_copy), id(ls_copy)) # 三者不同

# 为浅拷贝
ls[0], ls[2][0] = 666, 666
print(ls_slide_copy) # [0, 1, [666, 3], 4]
print(ls_copy) # [0, 1, [666, 3], 4]

2. 元组

  • 使用圆括号表示
  • 可以包含各种类型的变量
  • 序列类型
  • 不可变的(不可增加、删除、修改)

2.1 创建

  • 直接使用圆括号。当只有一个元素时,可以省略括号加上一个逗号
tp = (9, 5, 2, ['legal', 'health'], 7)
print(tp) # (9, 5, 2, ['legal', 'health'], 7)

# a tuple with a single element
number = (6)
tp_with_single_elem = 6, # 圆括号可省略
print(type(number), type(tp_with_single_elem)) # <class 'int'> <class 'tuple'>
  • 使用 tuple(iterable=()) 函数,传入可迭代对象
tp = [9, 5, 2, ['legal', 'health'], 7]
print(tp) # (9, 5, 2, ['legal', 'health'], 7)

2.2 访问

  • 解包。序列类型的可迭代对象都可以这样操作,但只有逗号而无括号时默认为元组,方便着来
def foo(x):
    return x * 2, x / 2, x ** 2 # 打包返回

res = foo(6)
print(type(res)) # <class 'tuple'>
res1, res2, res3 = res # 解包赋值
print(res1, res2, res3) # 12, 3.0, 36
# 遍历解包赋值
for loss, aux in [('loss1', 'aux1'), ('loss2', 'aux2')]:
	print(loss, aux)
  • 索引。同列表
# 虽然元组是不可变的,但是其中包含的列表中的元素是可变的
tp = (9, 5, 2, ['legal', 'healthy'], 7)
tp[-2][0] = 'illegal'
print(tp) # (9, 5, 2, ['illegal', 'healthy'], 7)
  • 切片。同列表

2.3 常用操作符

由于无法对元组添加、删除操作,因此元组对象没有像列表中的那些方法。但拼接、删除可以通过操作符实现,不过不是对原元组对象操作,而是返回结果的新对象。

  • 拼接 +
tp = (9, 5) + (2, ['legal', 'healthy']) + (7,)
print(tp) # (9, 5, 2, ['legal', 'healthy'], 7)
  • * 重复
print(6 * (6, 8)) # (6, 8, 6, 8, 6, 8, 6, 8, 6, 8, 6, 8)
print(6 * 6,) # 36,   这样无法实现重复
  • 关系操作符。同列表
  • 成员资格符。同列表

2.4 常用方法

  • tuple.count(value) 。同列表
  • tuple.index(value, start=0, stop=9223372036854775807) 。同列表
  • 没有tuple.copy()方法,元组只能通过切片复制(浅拷贝)
new_tp = tp[:]
tp[-2][0] = 'illegal'
print(tp) # (9, 5, 2, ['illegal', 'healthy'], 7)
print(new_tp) # (9, 5, 2, ['illegal', 'healthy'], 7)

3. 字典

  • 使用花括号表示
  • 通过“键”-“值”的映射实现数据存储和访问,键是不可重复的
  • 无序的,属于映射类型
  • 键是不可变的,必须是可哈希对象,如数字、字符串、元组
{(1, 2): 'one_two', 3: 'three'} # 可
{[1, 2]: 'one_two', 3: 'three'} # 报错 TypeError

3.1 创建

  • 直接使用花括号
# 当出现相同大小的整数和浮点数作为键,保留浮点数键,其对于的值以后传入的为准
dc = {(1, 2): 666, 3.0: 'hi', 3: 'legal', 'string': 'healthy'}
print(dc) # {(1, 2): 666, 3.0: 'legal', 'string': 'healthy'}
  • dict(self) 函数,传入一个以二元组为元素的元组
dc = dict((((1, 2), 666), (3.0, 'hi'), (3, 'legal'), ('string', 'healthy')))
print(dc) # {(1, 2): 666, 3.0: 'legal', 'string': 'healthy'}

3.2 访问

  • 以键为索引,获得值
dc = {(1, 2): 666, 3: 'legal', 'string': 'healthy'}
print(dc[3]) # 'legal'
print(dc[0]) # 报错 KeyError
  • dict.get(key, default=None) ,若访问的键存在,则返回对于的值,若访问的键不存在,则向对象中添加相应的键,其对应的值为向 default 传入的值。不能以关键字参数形式传入
# 统计一个字符串中字符出现的频率
subject = 'ophthalmol'
dc = {}
for s in subject:
    dc[s] = dc.get(s, 0) + 1
print(dc) # {'o': 2, 'p': 1, 'h': 2, 't': 1, 'a': 1, 'l': 2, 'm': 1}
  • dict.setdefault(key, default=None) ,若访问的键存在,则返回对应的值;若访问的键不存在,则向对象中添加相应的键,其对应的值为向 default 传入的值,并和返回设定默认值。但不能以关键字参数形式传入
dc = {(1, 2): 666, 3: 'legal', 'string': 'healthy'}
dc.setdefault('new_key', 'new_item')
print(dc) # {(1, 2): 666, 3: 'legal', 'string': 'healthy', 'new_key': 'new_item'}
  • dict.keys() 返回一个可迭代对象,为所有的键
dc = {(1, 2): 666, 3: 'legal', 'string': 'healthy'}
print(dc.keys()) # dict_keys([(1, 2), 3, 'string'])
  • dict.values() 返回一个可迭代对象,内容为所有的值
dc = {(1, 2): 666, 3: 'legal', 'string': 'healthy'}
print(dc.values()) # dict_values([666, 'legal', 'healthy'])
  • dict.items() 返回一个可迭代对象,为所有的键与值组成的二元组
dc = {(1, 2): 666, 3: 'legal', 'string': 'healthy'}
print(dc.items()) # dict_items([((1, 2), 666), (3, 'legal'), ('string', 'healthy')])

3.3 修改

  • dict[key] = value 直接设定一个不存在的键,并赋一个值。(当键存在时,修改原有的值)
dc = {(1, 2): 666, 3: 'legal', 'string': 'healthy'}
dc[-1] = 'zero'
print(dc) # {(1, 2): 666, 3: 'legal', 'string': 'healthy', -1: 'zero'}
  • dict.update() ,将其他字典或以二元组为元素的可迭代序列连接到原字典对象中
# 加入其他字典对象的内容
dc = {(1, 2): 666, 3: 'legal', 'string': 'healthy'}
other_dc = {0: 'zero', 1: 'one'}
dc.update(other_dc)
print(dc) # {(1, 2): 666, 3: 'legal', 'string': 'healthy', 0: 'zero', 1: 'one'}

# 加入以二元组为元素的可迭代序列
dc = {(1, 2): 666, 3: 'legal', 'string': 'healthy'}
other_dc = [(0, 'zero'), (1, 'one')]
dc.update(other_dc)
print(dc) # {(1, 2): 666, 3: 'legal', 'string': 'healthy', 0: 'zero', 1: 'one'}
  • dict.pop(k) ,传入需要弹出的键-值对中的键,弹出对应的键
dc = {(1, 2): 666, 3: 'legal', 'string': 'healthy'}
pop_out = dc.pop(3)
print(pop_out) # legal
print(dc) # {(1, 2): 666, 'string': 'healthy'}
  • dict.popitem() ,随机弹出一个键值对,以元组形式返回
dc = {(1, 2): 666, 3: 'legal', 'string': 'healthy'}
pop_out = dc.popitem()
print(pop_out) # ('string', 'healthy')
print(dc) # {(1, 2): 666, 3: 'legal'}
  • dict.clear() ,清空字典对象
dc = {(1, 2): 666, 3: 'legal', 'string': 'healthy'}
dc.clear()
print(dc) # {}

3.4 常用操作符

  • 成员资格符,判断所给的键是否在字典中
dc = {(1, 2): 666, 3: 'legal', 'string': 'healthy'}
print((1, 2) in dc, 0 in dc) # True False

3.5 其他常用方法

  • dict.copy() ,浅拷贝
dc = {'number': 666, 0: 'zero', 'list': ['legal', 'healthy']}
new_dc = dc.copy()

dc['list'][0] = 'illegal'
print(new_dc) # {'number': 666, 0: 'zero', 'list': ['illegal', 'healthy']}

4. 集合

  • 用花括号表示
  • 一组互不相等的元素
  • 无序的
  • 元素是不可变的,必须是可哈希对象,如数字、字符串、元组,集合可以视为只有键没有值的字典

4.1 创建

  • 直接使用花括号
st = {(1, 2), 3, 'string'}
print(st) # {(1, 2), 3, 'string'}

# 注意,空集合无法直接创建
empty_st = {}
print(type(empty_st) # dict
  • set() 函数,空集合只能使用该函数创建
# 传入可迭代对象
st = set(((1, 2), 3, 'string'))
print(st) # {(1, 2), 3, 'string'}

# 创建空集合
empty_st = set()
print(empty_st) # set()

# 传入字典时,返回字典的键构成的集合
st = set({1:'one', 2:'two', 3:'three'})
print(st) # {1, 2, 3}

4.2 访问

无法索引,因此无法访问到指定元素

4.3 修改

  • set.add() 增加一个元素
st = {0, 1, 2, 3}
st.add(4)
print(st) # {0, 1, 2, 3, 4}
  • set.remove() 移除一个元素,若元素不存在,则报错
st = {0, 1, 2, 3}
st.remove(1) # 若元素不在集合中则报错 KeyError
print(st) # {0, 2, 3}
  • set.discard() 移除一个元素,若元素不存在,啥也不做
st = {0, 1, 2, 3}
st.discard(4)
print(st) # {0, 1, 2, 3}
  • set.pop() 移除并返回集合中的任意一个元素
st = {0, 1, 2, 3}
print(st.pop()) # 0
print(st) # {1, 2, 3}
  • set.clear() 清空集合,使之成为空集
st = {0, 1, 2, 3}
st.clear()
print(st) # set()

4.4 常用操作符

  • 交集
st1 = {0, 1, 2}
st2 = {1, 2, 3}
print(st1 & st2) # {1, 2}
  • 并集
st1 = {0, 1, 2}
st2 = {1, 2, 3}
print(st1 | st2) # {0, 1, 2, 3}
  • 差集
st1 = {0, 1, 2}
st2 = {1, 2, 3}
print(st1 - st2) # {0}
  • 对称差分
st1 = {0, 1, 2}
st2 = {1, 2, 3}
print(st1 ^ st2) # {0, 3}
  • <= 与 < 一个集合是另一个的子集,后者更严格(还要求两集合不相同)
st1 = {0, 1, 2, 3}
st2 = {0, 1, 2, 3}
st3 = {0, 1, 2, 3, 4}

print(st1 <= st2, st1 < st2) # True, False
print(st1 <= st3, st1 < st3) # True, True
  • >= 与 > 一个集合是另一个的超集,后者更严格(还要求两集合不相同)
st1 = {0, 1, 2, 3, 4}
st2 = {0, 1, 2, 3, 4}
st3 = {0, 1, 2, 3}

print(st1 >= st2, st1 > st2) # True, False
print(st1 >= st3, st1 > st3) # True, True

5. 解析式

解析式(comprehension),又称推导式,使生成列表、字典、集合的代码更加简洁。此外,还有生成器解析式。

5.1 列表解析式

又称列表推导式,其语法为 [expression for value in iterable if condition],其中 if 条件为可选。(if 分支和 for 迭代结构参考 Python基础(四)控制结构)

  • 一维
# 生成一个列表,其元素为 10 以内的偶数的平方
[i**2 for i in range(10) if i % 2 == 0]
# [0, 4, 16, 36, 64]
  • 多维
# 创建 4 x 3 的二维列表
[[0] * 3 for _ in range(4)]
# [[0, 0, 0]
#  [0, 0, 0]
#  [0, 0, 0]
#  [0, 0, 0]]

5.2 字典解析式

语法为 {key: value for (key, value) in iterable if condition},其中 if 条件为可选。

{i: i + 1 for i in range(3)}
# {0: 1, 1: 2, 2: 3}

5.3 集合解析式

语法为 {value for value in iterable if condition},其中 if 条件为可选。

# 生成 10 以内的奇数的集合
{i for i in range(10) if i % 2 != 0}
# {1, 3, 5, 7, 9}

5.4 生成器解析式

解析式的创建是一个变化的过程,而元组是不可变的,因此没有元组推导式。尝试解析式的语法无法得到元组,而是将得到生成器(generator)。生成器的相关内容参考Python基础(十)深浅拷贝与三大器 Part 3

gen = (i for i in range(5))
type(gen) # <class 'generator'>

6. 数据存储方式

6.1 列表与元组的区别

列表与元组的相同之处为,其中的元素实际上是地址,引用的内容分散地存放在内存其他位置,保证了这些组合数据类型能够容纳不同类型的数据作为元素。

它们之间的区别之一为,同样的长度下,列表所需要的存储空间比元组更大(使用 sys.getsizeof 函数查看对象的占用的内存,以 byte 为单位)

import sys

ls = []
print(sys.getsizeof(ls)) # 64

tp = ()
print(sys.getsizeof(tp)) # 48
import sys

ls = [1, 'two', {3: 'three'}]
print(sys.getsizeof(ls)) # 88

tp = (1, 'two', {3: 'three'})
print(sys.getsizeof(tp)) # 72

原因在于,由于列表是可变的,系统总会为其额外分配一些内存(over-allocating),而对于元组并不会

ls = []
for i in range(10):
    print(sys.getsizeof(ls))
    ls.append(i)
# 64
# 96
# 96
# 96
# 96
# 128
# 128
# 128
# 128
# 192

tp = ()
for i in range(10):
    print(sys.getsizeof(tp))
    tp += (i,)
# 48
# 56
# 64
# 72
# 80
# 88
# 96
# 104
# 112
# 120

6.2 字典与列表的区别

字典较列表的索引速度更快,原因在于,字典中元素的存储是稀疏的,使用哈希函数的方式通过键对值进行索引,而列表中地址元素的存储是连续的,每次索引都需要从第一个元素开始。

例 列表和字典的索引速度差别

import time

ls = list(range(30000))
ls_ = list(range(30000))

since = time.time()

count = 0
for each in ls_:
    if each in ls:
        count += 1

print('time:', time.time() - since)
# time: 3.642605781555176
import time

dc = {i:i for i in range(30000)}
ls_ = list(range(30000))

since = time.time()

count = 0
for each in ls_:
    if each in dc:
        count += 1

print('time:', time.time() - since)
# time: 0.0056841373443603516

哈希函数的内容参考fishc的你知道 Python 的字典(Dict)是如何存储的吗。

所以

  • 字典是无序的,hash 值对应项的顺序与字典项显示的顺序可能不同

  • 字典需要的空间比列表大,实现了以空间换时间

ls = [1, 2, 3]
print(sys.getsizeof(ls)) # 88

dc = {0: 1, 1: 2, 2: 3}
print(sys.getsizeof(dc)) # 240
关于Python中组合数据类型的分类 Pythop数据类型 基本数据类型 字符串str 整数int 浮点数float 复数complex 布尔值bool 空值None 引用数据类型 组合数据类型【可以存放一组数据】 列表list 元组tuple 集合set 字典dict 引用数据类型【】 关于组合数据类型语法基础,我们一般有常用的: 列表,元组,集合,字典 在了解这四种数据类型之前,我们先来说一下什么是组合数据类型: 组合... 阅读详情

相关推荐

OpenRA引擎实战:如何从零开始搭建一个经典RTS游戏模组(附资源包)

本文详细介绍了如何利用开源游戏引擎OpenRA从零开始搭建经典RTS游戏模组。内容涵盖开发环境配置、资源管线处理、YAML规则定义、地图编辑与Lua脚本编写等全流程实战指南,并提供了资源包,帮助开发者和爱好者快速创建属于自己的即时战略游戏世界。

silver的专栏 903

Python组合数据类型

Python的组合数字类型是指可以存储多个数字的数据类型。Python中常见的组合数字类型包括列表(list)、元组(tuple)、集合(set)、 字典(dict)。

m0_65995252的博客 1132

别再只盯着DDR5了!聊聊3D DRAM:它凭什么能解决AI算力的内存墙难题?

本文深入探讨了3D DRAM技术如何突破AI算力的内存墙限制。通过立体堆叠架构,3D DRAM在存储密度、带宽和延迟方面实现显著提升,有效解决AI训练和推理中的内存瓶颈问题。文章还分析了三星、SK海力士等巨头的技术路线图,并指出商业化面临的挑战与机遇。

weixin_42685438的博客 188

Python第四天学习心得和体会

今天学习了Python,感觉比前几天轻松了些,可能是因为Python的一些知识点和C是相似的,在接下来的日子里,我也会重新温习C,写一些有关C语言学习的心得,敬请期待!,我们共同进步!!!

LHP618618的博客 2312

网络攻防实验——网络监听

利用CAIN实现ARP监听。

Trieyes_of_feng的博客 3194

从地方政府网站抓取政务公开数据:Python爬虫技术详解

在本文中,我们通过具体实例介绍了如何使用Python编写爬虫,从地方政府门户网站抓取政务公开数据。我们使用了requestsSelenium等最新技术,结合SQLite数据库存储抓取的数据,最后使用matplotlib进行数据可视化分析。通过本项目,您可以掌握如何抓取政府网站的公开数据,并将其进行清洗、存储和分析。这些技术对于进行政府政策分析、公共服务分析等方面具有重要的实际意义。希望通过本文的介绍,您能够更好地理解政务数据抓取的流程和方法,并能在实际工作中运用这些技术进行数据采集和分析。

2201_76125261的博客 1701

Python基础总结(五) 组合数据类型

目录 第五章:组合数据类型 一、列表: (一)列表元素查找: (二)列表元素添加: (三)列表元素排序: (四)列表元素修删: (五)列表生成式(推导式): (六):zip() 和enumerate() 函数 二、元祖: 三、集合: 四、字典: (一)创建字典: (二)访问字典: (三)元素的添加和修改: (四)字典元素的删除: (五)字典推导式: 五、组合数据类型与运算: 第五章:组合数据类型 一、列表: 由第一章,我们了解到Python列表的创建方式非常简单,既.

qq_58573822的博客 2605

Weibull Distribution韦布尔分布的深入详述(1)原理和公式

本章介绍韦布尔分布(weibull distribution)和实践之基本公式和推导。 韦伯分布被经常用来对失效性(Failure)或者,反而言之为,可靠性,进行衡量的工具。他的目标就是构建一个失效性分析的模型,或者说构建一个失效性分析的Pattern.【Franklin案,在展示CDF公式的之前,不得不提我们的国内的某些度知识里面的公式,采用的希腊字母完全和国外的不同,然而,很多希腊字母在使用中有特定的意义,本文采用的是通用的表达公式】 F(x)={1−e−(xλ)kx≥00x..............

山云的专栏 8万+

Python学习笔记(3)——组合数据类型

Python学习笔记(3)——组合数据类型

Raines_01的博客 547

【AUTOSAR-RTE】-1-聊一聊RTE(Run-Time Environment)

RTE(Run-Time Environment)是AUTOSAR ECU架构的核心。

「汽车电子助手」的博客 6502

U盘插入电脑时发出声音但不显示——编程解决方案

以上是一些常见的编程解决方案,帮助您解决U盘插入电脑时发出声音但不显示的问题。请注意,这些解决方案可能因不同的情况而略有不同,因此请根据您的具体情况进行调整和尝试。当您将U盘插入电脑时,如果您听到了连接声音,但是U盘却没有在文件资源管理器或桌面上显示出来,这可能是由于一些常见问题导致的。U盘的文件系统格式可能与您的计算机不兼容,导致无法正确识别。如果输出显示U盘的文件系统格式与您的计算机不兼容,您可以尝试重新格式化U盘或使用其他兼容的文件系统格式。其中,X是U盘的磁盘编号,Y是您想要分配给U盘的盘符。

ByteEchoX的博客 2461

Python基本数据类型 与 组合数据类型(涵盖大部分常用内置函数)

Python的基本数据类型一、基本数据类型(1) 数值类型1.1 整形 int1.2 浮点类型 float1.3 complex 复数(2) 字符串类型2.1 字符串基本使用2.2 字符串的切片2.3 字符串拼接2.3.1 最常见的字符串拼接 '+'2.3.2 字符串拼接竟然还可以使用 * (乘法运算符)2.3.3 字符串拼接 join 函数2.4 字符串统计2.4.1 还能统计单个字符出现的次数...

欢迎来到Gorit的博客 4813

rk3588 适配以太网(百兆)

虽然 RK3588 的 GMAC 控制器原生支持千兆速率(10/100/1000 Mbps),但在某些工业控制、物联网网关或成本敏感型硬件设计中,开发者会选择将其配置为 百兆以太网(Fast Ethernet) 模式。

weixin_35723192的博客 218

python学习笔记(三)组合数据类型

Python学习笔记(三)组合数据类型

qq_52309893的博客 294

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python从入门到实践学习笔记(三)————组合数据类型概述

组合数据类型分类 组合数据类型分为三类,第一类是集合类型,第二类是序列类型,第三类是映射类型 集合类型 集合类型是一个元素集合,元素之间没有排列顺序,没有相同元素 集合类型的定义 集合类型使用大括号{}来定义,元素与元素之间用逗号隔开,元素必须是不 可更改的常量,例如数字等等。 集合在定义时不用管元素之间是否重合,在进行集合输出时会自动去除 相同元素只留下其中一个。 集合类型的一些操作 集合与集合之间的操作 加入S,T分别是两个集合 S-T表示返回一个集合,这个集合中的元素是S

XiaoJiang936的博客 595

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

python中的组合数据类型

其中,组合数据类型的数据可以包含多个值,且可以添加、删除、修改等,常常用于存储、操作数据等,是数据分析中常用的数据类型。2.数值类型的数据是不可变的,即一旦创建就不能修改,而组合类型的数据是可变的,可以添加、删除和修改其中的元素.3.数值类型的数据通常用于进行数学计算和逻辑判断,而组合类型的数据通常用于存储、组织和操作多个相关的数据。有序序列,使用索引来访问,可以使用负数,-1表示最后一个元素,-2表示倒数第二个元素。1.数值类型的数据是单一的,只包含一个值,而组合类型的数据可以包含多个值。

Luinee的博客 2171

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Python基础(三) | Python的组合数据类型

⭐本专栏旨在对Python的基础语法进行详解,精炼地总结语法中的重点,详解难点,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握python编程,同时为后续的数据分析,机器学习及深度学习的代码能力打下坚实的基础。 🔥文章和代码已归档至【Github仓库】,需要的朋友们自取。或者关注公众号【AIShareLab】,回复 python基础 也可获取。

timerring的博客 1万+

【Python3】组合数据类型

主要介绍Python中的列表、元组、字典、集合这几大除开整数浮点数类型的数据类型。组合数据类型能将不同类型的数据组织在一起,实现更复杂的数据表示或数据处理功能。

QiHai的博客 8136

Python 组合数据类型

列表是程序当中常见的结构,列表可以作为栈(先进后出)、队列(先进先出)等使用,只需要在中括号 [] 中添加列表的项(元素),以半角英文的逗号来隔开每个元素,就可以定义列表。函数名作用将元素 x 追加到列表的尾部将列表 x 中的所有元素追加到列表尾部形成新的列表在列表中index为i的位置插入x元素在列表中第一个为 x 的元素移除。若不存在 x 元素将产生一个异常删除index为 i 的元素,并且将删除的元素显示出来,若不指定 i ,则默认弹出最后一个元素清空列表。

m0_74995879的博客 1690

(三)、组合数据类型

在Python中,组合数据类型包括以下四种:列表(List):列表是一种可变序列,它包含有序的元素,可以通过下标访问、添加、删除等操作。可以存储任意类型的对象,使用方括号 [] 定义,元素之间用逗号隔开。元组(Tuple):元组是一种不可变序列,与列表相似,但定义后不可修改,通常用于存储多个值,在 Python 中也可以返回多个值,使用小括号 () 定义,元素之间用逗号隔开。

zhanghongyi_cpp的博客 3150

python第六章——组合数据类型

python第六章——组合数据类型

m0_68735986的博客 5642

Python中组合数据类型

组合数据类型是Python中用于存储多个数据的容器类型,主要包括列表(list)、元组(tuple)、集合(set)、字典(dict)和字符串(str)等。下面介绍几个常用的组合数据类型​基本语法​默认值start默认为 0(开头)stop默认为列表长度(结尾)step默认为 1(正序)​负索引​:从末尾开始计数(-1 = 最后一个元素)​方向规则step > 0时:必须满足才有结果step < 0时:必须满足才有结果​包含规则​:包含起点元素,不包含终点元素#结果为#[5]#[]#[]

qq1851417332的博客 1303

Python组合数据类型(一)

isinstance(x,y)函数用于查询数据x是否含有类型y。

2401_84944910的博客 901
上一篇: Python学习笔记(二)基本数据类型
下一篇: Python学习笔记(四)控制结构
longrootchen
博客等级 码龄7年 19粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值