IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python学习——阿里云天池龙珠计划(python训练营)——task02 -> 正文阅读

[Python知识库]python学习——阿里云天池龙珠计划(python训练营)——task02

列表(list)

列表定义

  • 列表是有序集合,没有固定大小,能够保存任意数量任意类型的 Python 对象,语法为 [元素1, 元素2, …, 元素n] 。

注意:

  1. 关键点是中括号[]和逗号 ,
  2. 中括号把所有元素绑在一起
  3. 逗号将每个元素一一分开

列表的创建

  1. 创建普通的列表
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

x = [2, 3, 4, 5, 6, 7]
  1. 利用 range() 创建列表
x = list(range(10))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

x = list(range(1, 11, 2))
# [1, 3, 5, 7, 9]
  1. 利用推导式创建列表
x = [0] * 5
# [0, 0, 0, 0, 0]

x = [0 for i in range(5)]
# [0, 0, 0, 0, 0]

x = [i for i in range(10)]
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

x = [i for i in range(1, 10, 2)]
# [1, 3, 5, 7, 9]

x = [i for i in range(10, 1, -2)]
# [10, 8, 6, 4, 2]

x = [i ** 2 for i in range(1, 10)]
# [1, 4, 9, 16, 25, 36, 49, 64, 81]

x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]
# [3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]

  1. 创建一个 4×3的二维数组
x = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 0, 0]]
# [[1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 0, 0]]

注意:

  • 由于list的元素可以是任何对象,因此列表中所保存的是对象的指针。即使保存一个简单的 [1,2,3],也有3个指针和3个整数对象。
  • x = [a] * 4 操作中,只是创建4个指向list的引用,所以一旦 a 改变, x 中4个 a 也会随之改变
  1. 创建一个混合列表
mix = [1, 'lsgo', 3.14, [1, 2, 3]]
# [1, 'lsgo', 3.14, [1, 2, 3]]
  1. 创建一个空列表
empty = []
# []
  • 列表不像元组,列表内容可更改 (mutable),因此附加 ( append , extend )、插入 ( insert )、删除(remove, pop ) 这些操作都可以用在它身上。

向列表中添加元素

  1. list.append(obj) 在列表末尾添加新的对象,只接受一个参数,参数可以是任何数据类型,被追加的元素在 list中保持着原结构类型。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.append('Thursday')
print(x) 
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Thursday']
  • 此元素如果是一个 list,那么这个 list 将作为一个整体进行追加,注意 append() 和 extend() 的区别。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.append(['Thursday', 'Sunday'])
print(x)
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', ['Thursday', 'Sunday']]
  1. list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.extend(['Thursday', 'Sunday'])
print(x) 
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Thursday', 'Sunday']
  • 严格来说 append 是追加,把一个东西整体添加在列表后,而 extend 是扩展,把一个东西里的所有元素添加在列表后。
  1. list.insert(index, obj) 在编号 index 位置前插入 obj ,index从0开始。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.insert(2, 'Sunday')
print(x)
# ['Monday', 'Tuesday', 'Sunday', 'Wednesday', 'Thursday', 'Friday']

删除列表中的元素

  1. list.remove(obj) 移除列表中某个值的第一个匹配项
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.remove('Monday')
print(x)
# ['Tuesday', 'Wednesday', 'Thursday', 'Friday']
  1. list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
y = x.pop(0)
print(y) 
# Monday
  • removepop 都可以删除元素,前者是指定具体要删除的元素,后者是指定一个索引
  1. del X[var1, var2 ……] 删除单个或多个对象。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
del x[0:2]
print(x) 
# ['Wednesday', 'Thursday', 'Friday']
# 删除从start到end之间的元素,不包括end
  • 如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用 del 语句;如果你要在删除元素后还能继续使用它,就使用方法 pop() 。

获取列表中的元素

  1. 通过元素的索引值,从列表获取单个元素,注意,列表索引值是从0开始的。
  2. 通过将索引指定为-1,可让Python返回最后一个列表元素,索引 -2 返回倒数第二个列表元素,以此类推。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(x[0]) 
# Monday

print(x[-1])
# Friday
  1. 切片的通用写法是 start : stop : step。

(1)情况1:“start :”
step 为 1 (默认) 从编号 start 往列表尾部切片。

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(x[3:]) 
# ['Thursday', 'Friday']

print(x[-3:]) 
# ['Wednesday', 'Thursday', 'Friday']

(2)情况2:": stop"
step 为 1 (默认) 从列表头部编号 stop 切片。

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:3]) 
# ['Monday', 'Tuesday', 'Wednesday']

print(week[:-3]) 
# ['Monday', 'Tuesday']

(3) 情况3:“start : stop”
step 为 1 (默认) 从编号 start 往编号 stop 切片。

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[1:3])
# ['Tuesday', 'Wednesday']

print(week[-3:-1])
# ['Wednesday', 'Thursday']

(4)情况4:“start : stop : step”
以具体的 step 从编号 start 往编号 stop 切片。注意最后把 step 设为 -1,相当于将列表反向排列。

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[1:4:2]) 
# ['Tuesday', 'Thursday']

print(week[:4:2]) 
# ['Monday', 'Wednesday']

print(week[1::2]) 
# ['Tuesday', 'Thursday']

print(week[::-1]) 
# ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday']

(5)情况5:" : "
复制列表中的所有元素(浅拷贝)。

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:]) 
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

列表常用操作符

  1. 等号操作符:==
  2. 连接操作符:+
  3. 重复操作符:*
  4. 成员关系操作符:in、not in
    注意:等号 ==,只有成员、成员位置相同时才返回True。 列表拼接也有两种方式,用加号 +乘号 *前者首尾拼接,后者复制拼接
list1 = [123, 456]
list2 = [456, 123]
list3 = [123, 456]
print(list1 == list2)
# False

print(list1 == list3)
# True

list4 = list1 + list2  # extend()
print(list4) 
# [123, 456, 456, 123]

list5 = list3 * 3  # 等同于list3*=3
print(list5)
# [123, 456, 123, 456, 123, 456]

print(123 in list3)
# True

print(456 not in list3)
# False

注意:前面三种方法( append , extend , insert )可对列表增加元素,它们没有返回值,是直接修改了原数据对象。将两个list相加,需要创建新的 list 对象,从而需要消耗额外的内存,特别是当 list 较大时,尽量不要使用 “+” 来添加list

列表的其它方法

  • list.count(obj) 统计某个元素在列表中出现的次数
list1 = [123, 456] * 3
print(list1) # [123, 456, 123, 456, 123, 456]
num = list1.count(123)
print(num) # 3
  • list.index(x[, start[, end]]) 从列表中找出某个值第一个匹配项的索引位置
list1 = [123, 456] * 5
print(list1.index(123)) # 0
print(list1.index(123, 1)) # 2
print(list1.index(123, 3, 7)) # 4
  • list.reverse() 反向列表中元素
x = [123, 456, 789]
x.reverse()
print(x) # [789, 456, 123]
  • list.sort(key=None, reverse=False) 对原列表进行排序
    注意:
  1. key:主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  2. reverse:排序规则, reverse = True 降序, reverse = False 升序(默认)
  3. 该方法没有返回值,但是会对列表的对象进行排序。
x = [123, 456, 789, 213]
x.sort()
print(x)
# [123, 213, 456, 789]
x.sort(reverse=True)
print(x)
# [789, 456, 213, 123]
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
x = [(2, 2), (3, 4), (4, 1), (1, 3)]
x.sort(key=takeSecond)
print(x)
# [(4, 1), (2, 2), (1, 3), (3, 4)]
x.sort(key=lambda a: a[0])
print(x)
# [(1, 3), (2, 2), (3, 4), (4, 1)]

元组(tuple)

元组定义语法为: (元素1, 元素2, ..., 元素n)

  1. 小括号把所有元素绑在一起
  2. 逗号将每个元素一一分开

创建和访问一个元组

  1. Python 的元组与列表类似,不同之处在于tuple被创建后就不能对其进行修改,类似字符串。
  2. 元组使用小括号列表使用方括号
  3. 创建元组可以用小括号 (),也可以什么都不用,为了可读性,建议还是用 ()。
t1 = (1, 10.31, 'python')
t2 = 1, 10.31, 'python'
print(t1)
# (1, 10.31, 'python')
print(t2)
# (1, 10.31, 'python')
tuple1 = (1, 2, 3, 4, 5, 6, 7, 8)
print(tuple1[1]) # 2
print(tuple1[5:]) # (6, 7, 8)
print(tuple1[:5]) # (1, 2, 3, 4, 5)
tuple2 = tuple1[:]
print(tuple2) # (1, 2, 3, 4, 5, 6, 7, 8)
  1. 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:
temp = (1)
print(type(temp)) # <class 'int'>
temp = (1,)
print(type(temp)) # <class 'tuple'>
print(8 * (8)) # 64
print(8 * (8,)) # (8, 8, 8, 8, 8, 8, 8, 8)
  1. 以创建二维元组:
nested = (1, 10.31, 'python'), ('data', 11)
print(nested)
# ((1, 10.31, 'python'), ('data', 11))
  1. 元组中可以用整数来对它进行索引 (indexing) 和切片 (slicing),不严谨的讲,前者是获取单个元素,后者是获取一组元素。接着上面二维元组的例子,先看看索引的代码。
print(nested[0])
# (1, 10.31, 'python')
print(nested[0][0], nested[0][1], nested[0][2])
# 1 10.31 python
print(nested[0][0:2])
# (1, 10.31)

更新和删除一个元组

week = ('Monday', 'Tuesday', 'Thursday', 'Friday')
week = week[:2] + ('Wednesday',) + week[2:]
print(week) # ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday')

t1 = (1, 2, 3, [4, 5, 6])
print(t1) # (1, 2, 3, [4, 5, 6])
t1[3][0] = 9
print(t1) # (1, 2, 3, [9, 5, 6])

元组相关的操作符

  1. 连接操作符 +
  2. 重复操作符 *
  3. 成员关系操作符 in 、 not in

元组拼接 (concatenate) 有两种方式,用加号 +乘号 *前者首尾拼接,后者复制拼接

t1 = (2, 3, 4, 5)
t2 = ('老马的程序人生', '小马的程序人生')
t3 = t1 + t2
print(t3) 
# (2, 3, 4, 5, '老马的程序人生', '小马的程序人生')
t4 = t2 * 2
print(t4) 
# ('老马的程序人生', '小马的程序人生', '老马的程序人生', '小马的程序人生')

内置方法

元组大小和内容都不可更改,因此只有 countindex 两种方法。

  1. count(‘t’) 是记录在元组 t 中该元素出现几次。
  2. index(t) 是找到该元素在元组 t 的索引。
t = (1, 10.31, 'python')
print(t.count('python')) # 1
print(t.index(10.31)) # 1

解压元组

  1. 解压(unpack)一维元组(有几个元素左边括号定义几个变量)
t = (1, 10.31, 'python')
(a, b, c) = t
print(a, b, c)
# 1 10.31 python
  1. 解压二维元组(按照元组里的元组结构来定义变量)
t = (1, 10.31, ('OK', 'python'))
(a, b, (c, d)) = t
print(a, b, c, d)
# 1 10.31 OK python
  1. 如果你只想要元组其中几个元素,用通配符*,英文叫 wildcard,在计算机语言中代表一个或多个元素。下例就是把多个元素丢给了 rest 变量。如果你根本不在乎 rest 变量,那么就用通配符*加上下划线_
t = 1, 2, 3, 4, 5
a, b, *rest, c = t
print(a, b, c) # 1 2 5
print(rest) # [3, 4]

a, b, *_ = t
print(a, b) # 1 2

字符串

  1. Python 中字符串被定义为引号之间的字符集合
  2. Python 支持使用成对的 单引号 或 双引号
t2 = "I love Python!"
print(t2)
# I love Python!

print(5 + 8) # 13
print('5' + '8') # 58
  1. 如果字符串中需要出现单引号或双引号,可以使用转义符号 \ 对字符串中的符号进行转义。
print('let\'s go') # let's go
print("let's go") # let's go
print('C:\\now') # C:\now
print("C:\\Program Files\\Intel\\Wifi\\Help") # C:\Program Files\Intel\Wifi\Help
1234

Python 的常用转义字符

\\ 反斜杠符号
\' 单引号
\" 双引号
\n 换行
\t 横向制表符(TAB)
\r 回车

  • 原始字符串只需要在字符串前边加一个英文字母 r 即可。
print(r'C:\Program Files\Intel\Wifi\Help') 
# C:\Program Files\Intel\Wifi\Help

字符串的切片与拼接

+拼接

str1 = 'I Love LsgoGroup'
print(str1[:6]) # I Love
print(str1[5]) # e
print(str1[:6] + " 插入的字符串 " + str1[6:]) 
# I Love 插入的字符串 LsgoGroup

字符串的常用内置方法

  1. capitalize() 将字符串的第一个字符转换为大写
  2. lower() 转换字符串中所有大写字符为小写
  3. upper() 转换字符串中的小写字母为大写
  4. swapcase() 将字符串中大写转换为小写,小写转换为大写。
  5. count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数。
  6. endswith(suffix, beg=0, end=len(string)) 检查字符串是否以指定子字符串 suffix 结束,如果是,返回True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查。
  7. startswith(substr, beg=0,end=len(string)) 检查字符串是否以指定子字符串 substr 开头,如果是,返回
    True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查。
  8. find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是
    否包含在指定范围内,如果包含,返回开始的索引值,否则返回 -1。
  9. rfind(str, beg=0,end=len(string)) 类似于 find() 函数,不过是从右边开始查找
  10. isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False。
  11. ljust(width[, fillchar]) 返回一个原字符串左对齐,并使用 fillchar (默认空格)填充至长度 width 的新字
    符串。
  12. rjust(width[, fillchar]) 返回一个原字符串右对齐,并使用 fillchar (默认空格)填充至长度 width 的新字
    符串。
  13. lstrip([chars]) 截掉字符串左边空格指定字符
  14. rstrip([chars]) 删除字符串末尾空格指定字符
  15. strip([chars]) 在字符串上执行 lstrip()rstrip()
  16. partition(sub) 找到子字符串sub,把字符串分为一个三元组 (pre_sub,sub,fol_sub) ,如果字符串中不包含sub则返回 (‘原字符串’,’’,’’) 。
  17. rpartition(sub) 类似于 partition() 方法,不过是从右边开始查找。
  18. replace(old, new [, max]) 把 将字符串中的 old 替换成 new ,如果 max 指定,则替换不超过 max 次。
  19. split(str="", num) 不带参数默认是以空格分隔符切片字符串,如果 num 参数有设置,则仅分隔 num 个子字符串,返回切片后的子字符串拼接的列表。
  20. splitlines([keepends]) 按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为False,不包含换行符,如果为 True,则保留换行符。
  21. maketrans(intab, outtab) 创建字符映射的转换表,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
  22. translate(table, deletechars="") 根据参数 table 给出的表,转换字符串的字符,要过滤掉的字符放
    到 deletechars 参数中。

字符串格式化

  1. Python format 格式化函数
str = "{0} Love {1}".format('I', 'Lsgogroup') # 位置参数
print(str) # I Love Lsgogroup

str = "{a} Love {b}".format(a='I', b='Lsgogroup') # 关键字参数
print(str) # I Love Lsgogroup

str = "{0} Love {b}".format('I', b='Lsgogroup') # 位置参数要在关键字参数之前
print(str) # I Love Lsgogroup

str = '{0:.2f}{1}'.format(27.658, 'GB') # 保留小数点后两位
print(str) # 27.66GB
  1. Python 字符串格式化符号
    %c 格式化字符及其ASCII码
    %s 格式化字符串,用str()方法处理对象
    %r 格式化字符串,用rper()方法处理对象
    %d 格式化整数
    %o 格式化无符号八进制数
    %x 格式化无符号十六进制数
    %X 格式化无符号十六进制数(大写)
    %f 格式化浮点数字,可指定小数点后的精度
    %e 用科学计数法格式化浮点数
    %E 作用同%e,用科学计数法格式化浮点数
    %g 根据值的大小决定使用%f或%e
    %G 作用同%g,根据值的大小决定使用%f或%E

  2. 格式化操作符辅助指令
    m.n m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
    -用做左对齐(减号)
    + 在正数前面显示加号( + )
    # 在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)
    0 显示的数字前面填充’0’而不是默认的空格

字典(dict)

  1. 序列是以连续的整数为索引,与此不同的是,字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值
  2. 字典是 Python 唯一的一个映射类型,字符串、元组、列表属于序列类型。
    判断一个数据类型是否可变的两种方法:
  3. 用 id(X) 函数,对 X 进行某种操作,比较操作前后的 id ,如果不一样,则 X 不可变,如果一样,则X可变。
  4. 用 hash(X) ,只要不报错,证明 X 可被哈希,即不可变,反过来不可被哈希,即可变。
i = 1
print(id(i)) # 140732167000896

i = i + 2
print(id(i)) # 140732167000960

l = [1, 2]
print(id(l)) # 4300825160

l.append('Python')
print(id(l)) # 4300825160

print(hash('Name')) # -9215951442099718823

print(hash((1, 2, 'Python'))) # 823362308207799471

print(hash([1, 2, 'Python']))
# TypeError: unhashable type: 'list'

print(hash({1, 2, 3}))
# TypeError: unhashable type: 'set'

结论:

  1. 数值、字符和元组都能被哈希,因此它们是不可变类型
  2. 列表、集合、字典不能被哈希,因此它是可变类型

字典定义

字典是无序的键:值( key:value 对集合,键必须是互不相同的(在同一个字典之内)。

  1. dict 内部存放的顺序和 key 放入的顺序是没有关系的。
  2. dict 查找和插入的速度极快,不会随着 key 的增加而增加,但是需要占用大量的内存。

字典 定义语法为 {元素1, 元素2, …, 元素n}

  1. 其中每一个元素是一个键值对:键:值 ( key:value )
  2. 关键点是大括号 {},逗号 ,冒号 :
  3. 大括号:把所有元素绑在一起
  4. 逗号:将每个键值对分开
  5. 冒号: 将键和值分开

创建和访问字典

brand = ['李宁', '耐克', '阿迪达斯']
slogan = ['一切皆有可能', 'Just do it', 'Impossible is nothing']
print('耐克的口号是:', slogan[brand.index('耐克')]) 
# 耐克的口号是: Just do it
dic = {'李宁': '一切皆有可能', '耐克': 'Just do it', '阿迪达斯': 'Impossible is nothing'}
print('耐克的口号是:', dic['耐克']) 
# 耐克的口号是: Just do it

注意:如果我们取的在字典中不存在,会直接报错KeyError

dic1 = {1: 'one', 2: 'two', 3: 'three'}
print(dic1) # {1: 'one', 2: 'two', 3: 'three'}
print(dic1[1]) # one
print(dic1[4]) # KeyError: 4

dic2 = {'rice': 35, 'wheat': 101, 'corn': 67}
print(dic2) # {'wheat': 101, 'corn': 67, 'rice': 35}
print(dic2['rice']) # 35

dict():创建一个空的字典。
通过 key 直接把数据放入字典中,但一个 key 只能对应一个 value ,多次对一个 key 放入 value ,后面的值会把前面的值冲掉。

dic = dict()
dic['a'] = 1
dic['b'] = 2
dic['c'] = 3
print(dic)
# {'a': 1, 'b': 2, 'c': 3}

dic['a'] = 11
print(dic)
# {'a': 11, 'b': 2, 'c': 3}

dic['d'] = 4
print(dic)
# {'a': 11, 'b': 2, 'c': 3, 'd': 4}

dict(mapping)

dic1 = dict([('apple', 4139), ('peach', 4127), ('cherry', 4098)])
print(dic1) # {'cherry': 4098, 'apple': 4139, 'peach': 4127}

dic2 = dict((('apple', 4139), ('peach', 4127), ('cherry', 4098)))
print(dic2) # {'peach': 4127, 'cherry': 4098, 'apple': 4139}

dict(**kwargs)
这种情况下,键只能为字符串类型,并且创建的时候字符串不能加引号,加上就会直接报语法错误。

dic = dict(name='Tom', age=10)
print(dic) # {'name': 'Tom', 'age': 10}

字典的内置方法

  1. dict.fromkeys(seq[, value])用于创建一个新字典,以序列 seq 中元素做字典的键, value 为字典所有键对应的初始值。
seq = ('name', 'age', 'sex')
dic1 = dict.fromkeys(seq)
print("新的字典为 : %s" % str(dic1)) 
# 新的字典为 : {'name': None, 'age': None, 'sex': None}
dic2 = dict.fromkeys(seq, 10)
print("新的字典为 : %s" % str(dic2)) 
# 新的字典为 : {'name': 10, 'age': 10, 'sex': 10}
dic3 = dict.fromkeys(seq, ('小马', '8', '男'))
print("新的字典为 : %s" % str(dic3)) 
# 新的字典为 : {'name': ('小马', '8', '男'), 'age': ('小马', '8', '男'), 'sex': ('小马', '8', '男')}
  1. dict.keys() 返回一个可迭代对象,可以使用 list() 来转换为列表,列表为字典中的所有键
dic = {'Name': 'lsgogroup', 'Age': 7}
print(dic.keys()) # dict_keys(['Name', 'Age'])
lst = list(dic.keys()) # 转换为列表
print(lst) # ['Name', 'Age']
  1. dict.values() 返回一个迭代器,可以使用 list() 来转换为列表,列表为字典中的所有值
  2. dict.items() 以列表返回可遍历的 (键, 值) 元组数组
  3. dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回默认值。
  4. dict.setdefault(key, default=None) 和 get() 方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。
  5. key in dict in操作符用于判断键是否存在于字典中,如果键在字典dict里返回true ,否则返回false 。 而 not in 操作符刚好相反,如果键在字典 dict 里返回 false ,否则返回 true 。
  6. dict.pop(key[,default]) 删除字典给定键 key所对应的值,返回值为被删除的值。 key值必须给出。若 key不存在,则返回 default 值。
  7. del dict[key] 删除字典给定键 key 所对应的值
  8. dict.popitem()随机返回并删除字典中的一对键和值,如果字典已经为空,却调用了此方法,就报出KeyError异常
  9. dict.clear()用于删除字典内所有元素
  10. dict.copy()返回一个字典的浅复制。(注意赋值和浅复制的区别)
  11. dict.update(dict2)把字典参数dict2的 key:value 对更新到字典dict里

集合(set)

python 中 set 与 dict 类似,也是一组 key 的集合,但不存储 value 。由于key不能重复,所以,在set中,没有重复的key 。

集合的创建

  1. 先创建对象再加入元素。
  2. 在创建空集合的时候只能使用s = set(),因为s = {}创建的是空字典。
  3. 直接把一堆元素用花括号括起来{元素1, 元素2, ..., 元素n}
  4. 重复元素在 set 中会被自动过滤
  • 使用set(value)工厂函数,把列表或元组转换成集合。
a = set('abracadabra')
print(a) 
# {'r', 'b', 'd', 'c', 'a'}

b = set(("Google", "Lsgogroup", "Taobao", "Taobao"))
print(b) 
# {'Taobao', 'Lsgogroup', 'Google'}

c = set(["Google", "Lsgogroup", "Taobao", "Google"])
print(c) 
# {'Taobao', 'Lsgogroup', 'Google'}

访问集合中的值

  1. 可以使用len()內建函数得到集合的大小。
  2. 可以使用for把集合中的数据一个个读取出来。
  3. 可以通过 in 或 not in 判断一个元素是否在集合中已经存在。

集合中内置方法

  1. set.add(elmnt)用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。
fruits = {"apple", "banana", "cherry"}
fruits.add("orange")
print(fruits) 
# {'orange', 'cherry', 'banana', 'apple'}
  1. set.update(set)用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
x = {"apple", "banana", "cherry"}
y = {"google", "baidu", "apple"}
x.update(y)
print(x)
# {'cherry', 'banana', 'apple', 'google', 'baidu'}

y.update(["lsgo", "dreamtech"])
print(y)
# {'lsgo', 'baidu', 'dreamtech', 'apple', 'google'}
  1. set.remove(item)用于移除集合中的指定元素。如果元素不存在,则会发生错误。
fruits = {"apple", "banana", "cherry"}
fruits.remove("banana")
print(fruits) # {'apple', 'cherry'}
  1. set.discard(value)用于移除指定的集合元素。 remove()方法在移除一个不存在的元素时会发生错误,而discard()方法不会。
  2. set.pop()用于随机移除一个元素。
fruits = {"apple", "banana", "cherry"}
x = fruits.pop()
print(fruits) # {'cherry', 'apple'}
print(x) # banana

由于 set 是无序和无重复元素的集合,所以两个或多个 set 可以做数学意义上的集合操作

  1. set.intersection(set1, set2 ...)或set1 & set2 返回两个集合的交集
  2. set.intersection_update(set1, set2 ...) 交集,在原始的集合上移除不重叠的元素。
  3. set.union(set1, set2...)或set1 | set2 返回两个集合的并集
  4. set.difference(set)或set1 - set2 返回集合的差集
  5. set.difference_update(set) 集合的差集,直接在原来的集合中移除元素,没有返回值
  6. set.symmetric_difference(set)或set1 ^ set2 返回集合的异或
  7. set.symmetric_difference_update(set) 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
  8. set.issubset(set)或set1 <= set2 判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False。
  9. set.issuperset(set)或set1 >= set2 用于判断集合是不是包含其他集合,如果是则返回 True,否则返回 False。
  10. set.isdisjoint(set) 用于判断两个集合是不是不相交,如果是返回 True,否则返回 False。

序列

序列类型包括字符串、列表、元组、集合和字典

针对序列的内置函数

  1. list(sub) 把一个可迭代对象转换为列表。
  2. tuple(sub) 把一个可迭代对象转换为元组。
  3. str(obj) 把obj对象转换为字符串。
  4. len(s) 返回对象(字符、列表、元组等)长度或元素个数。
  5. max(sub) 返回序列或者参数集合中的最大值。
  6. min(sub) 返回序列或参数集合中的最小值。
  7. sum(iterable[, start=0]) 返回序列 iterable 与可选参数 start 的总和。
print(sum([1, 3, 5, 7, 9])) # 25
print(sum([1, 3, 5, 7, 9], 10)) # 35
print(sum((1, 3, 5, 7, 9))) # 25
print(sum((1, 3, 5, 7, 9), 20)) # 45
  1. sorted(iterable, key=None, reverse=False) 对所有可迭代的对象进行排序操作。
  • iterable – 可迭代对象。
  • key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse – 排序规则, reverse = True 降序 , reverse = False 升序(默认)。
  • 返回重新排序的列表。
x = [-8, 99, 3, 7, 83]
print(sorted(x)) # [-8, 3, 7, 83, 99]
print(sorted(x, reverse=True)) # [99, 83, 7, 3, -8]

t = ({"age": 20, "name": "a"}, {"age": 25, "name": "b"}, {"age": 10, "name": "c"})
x = sorted(t, key=lambda a: a["age"])
print(x)
# [{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]
  1. reversed(seq) 函数返回一个反转的迭代器。
s = 'lsgogroup'
x = reversed(s)
print(x) # <reversed object at 0x000002507E8EC2C8>
print(list(x))
# ['p', 'u', 'o', 'r', 'g', 'o', 'g', 's', 'l']

t = ('l', 's', 'g', 'o', 'g', 'r', 'o', 'u', 'p')
print(list(reversed(t)))
# ['p', 'u', 'o', 'r', 'g', 'o', 'g', 's', 'l']

r = range(5, 9)
print(list(reversed(r)))
# [8, 7, 6, 5]

x = [-8, 99, 3, 7, 83]
print(list(reversed(x)))
# [83, 7, 3, 99, -8]
  1. enumerate(sequence, [start=0])用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
a = list(enumerate(seasons))
print(a) 
# [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

b = list(enumerate(seasons, 1))
print(b) 
# [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

for i, element in a:
 print('{0},{1}'.format(i, element))
  1. zip(iter1 [,iter2 [...]])用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。可以使用 list() 转换来输出列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
a = [1, 2, 3]
b = [4, 5, 6]
c = [4, 5, 6, 7, 8]

zipped = zip(a, b)
print(zipped) # <zip object at 0x000000C5D89EDD88>
print(list(zipped)) # [(1, 4), (2, 5), (3, 6)]
zipped = zip(a, c)
print(list(zipped)) # [(1, 4), (2, 5), (3, 6)]

a1, a2 = zip(*zip(a, b))
print(list(a1)) # [1, 2, 3]
print(list(a2)) # [4, 5, 6]
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:25:22  更:2021-07-13 17:27:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 1:24:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码