美文网首页
Python组合数据类型笔记

Python组合数据类型笔记

作者: 枯藤疯鸦 | 来源:发表于2019-11-04 17:05 被阅读0次

小白笔记
仅记录常规操作中较为不熟悉的操作类型

1、list(str)/str.split():列表中的元素为字符类型

>>> s='1,3,6,9,2,5,1'
>>> s=list(s)
>>> s

# ['1',',','3',',','6',',','9',',','2',',','5',',','1']

>>> s='1,2,3,4' 
>>> s=s.split(',') 
>>> s 

# ['1','2','3','4']

2、对于数字字符串要转换为列表类型,需要加eval函数,非数字字符串不可用否则会报错

>>> s='1,3,6,9,2,5,1'
>>> s=list(eval(s))
>>> s

# [1, 3, 6, 9, 2, 5, 1]

>>> s='a,b,c'
>>> c=list(eval(s))

Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    c=list(eval(s))
  File "<string>", line 1, in <module>
NameError: name 'a' is not defined

3、对于列表定义,非数字元素需要加引号,否则会报错

>>> f=[a,b,c]

Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    f=[a,b,c]
NameError: name 'a' is not defined

>>> f=[1,2,3]
>>> f

# [1, 2, 3]

注:列表类型可以使用 "+" 来为列表增加元素,可见如下杨辉三角的生成器实例:

def triangles():
    L = [1]
    while 1:
        yield L
        L = [0] + L + [0]
        L = [L[i] + L[i + 1] for i in range(len(L) - 1)]

4、关于字典定义,其中非数字元素必须为字符串形式(即:必须有引号),键值都是

>>> d = {china:beijing,usa:newyork}

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    d = {china:beijing,usa:newyork}
NameError: name 'china' is not defined

>>> d = {'a':2,'b':3}
>>> d

# {'a': 2, 'b': 3}

5、字典中:k in d 仅用于判断某一键 k 是否在字典 d 中

6、ls.remove(x) 将列表ls中出现的第一个元素x删除,不会生产新的列表,是对原列表进行修改

7、d.get(k, <default>) 用来返回字典 d 中的 k 键对应的值,如果不存在 k 键则返回 <default>

8、d.pop(k, <default>)用来删除字典 d 中 k 键及对应的值,如果不存在 k 键则返回 <default>

>>> d = {'中国':'北京','美国':'华盛顿','法国':'巴黎'}
>>> d.get('中国','罗马')

# '北京'

>>> d.get('慕尼黑','罗马')

# '罗马'

>>> d.pop('中国','罗马')

# '北京'

>>> d.pop('慕尼黑','罗马')

# '罗马'

>>> d

# {'美国': '华盛顿', '法国': '巴黎'}

9、列表生成式
列表生成式就是一个用来生成列表的特定语法形式的表达式,它是一种语法糖。

语法糖是指计算机语言中,某些特定功能用一种简洁方便的语法实现,以代替常规语法(比如电话中的快速拨号:用“长按1” 来呼叫特定联系人,以替代拨打完整的电话号码)

基础语法格式

[exp for iter_var in iterable]

工作过程:

迭代iterable中的每个元素; # iterable:迭代对象
每次迭代先把结果赋给iter_var,后通过exp得到一个新值; # exp:表达式
最后把所有通过exp得到的计算值以一个新列表的形式返回。

相当于这样的过程:

L = []
for iter_var in iterable:
    L.append(exp)

实例:生成一个2n+1的数字列表,n为从3到11的数字

list1 = [2*n + 1 for n in range(3, 11)]

带过滤功能语法格式

[exp for iter_var in iterable if_exp]

工作过程:

迭代iterable中的每个元素,每次迭代都先判断if_exp表达式结果为真,如果为真则进行下一步,如果为假则进行下一次迭代;
把迭代结果赋值给iter_var,然后通过exp得到一个新的计算值;
最后把所有通过exp得到的计算值以一个新列表的形式返回。

相当于这样的过程:

L = []
for iter_var in iterable:
    if_exp:
        L.append(exp)

实例:过滤出一个指定的数字列表中值大于20的元素

L = [3, 7, 11, 14,19, 33, 26, 57, 99]
list2 = [x for x in L if x > 20]

循环嵌套语法格式

[exp for iter_var_A in iterable_A for iter_var_B in iterable_B]

工作过程:

每迭代iterable_A中的一个元素,就把ierable_B中的所有元素都迭代一遍。

相当于这样的过程:

L = []
for iter_var_A in iterable_A:
    for iter_var_B in iterable_B:
        L.append(exp)

实例:计算两个集合的全排列,并将结果作为保存至一个新的列表中

L1 = ['香蕉', '苹果', '橙子']
L2 = ['可乐', '牛奶']
list3 = [(x, y) for x in L1 for y in L2]

10、生成器
按照某种算法不断生成新的数据,直到满足某一个指定的条件结束
构造生成器的两种方式:

  • 使用类似列表生成式的方式生成
(2*n + 1 for n in range(3, 11))   # 把列表生成式中的 [] 改为 () 即可
  • 使用包含yield的函数来生成
    实例:
def my_range(start, end):
    for n in range(start, end):
        yield 2*n + 1  # 生成器函数,在执行时遇到yield的时候,函数返回(中断),只有下次调用时才会继续执行后续语句(从上次中断的位置继续)
        print('测试执行过程')

g1 = my_range(3, 6)

利用next() 函数来遍历生成器(可以用for循环遍历)
第一次遍历

print(next(g1))

结果是:

7

第二次遍历

print(next(g1))

结果是:

测试执行过程
9

需要说明的是:如果生成器函数有返回值,要获取该返回值的话,只能通过在一个while循环中不断的next(),最后通过捕获StopIteration异常

参考链接:
https://www.cnblogs.com/yyds/p/6281453.html
https://www.liaoxuefeng.com/wiki/1016959663602400/1017318207388128

相关文章

  • Python初学(十六)

    本节之后的一些章节主要说组合数据类型。 知识导图 组合数据类型的基本概念 组合数据类型: Python语言中最常用...

  • python的组合数据类型

    python中的数据类型 Python的组合数据类型有四种,分别是:列表(list)、元组(tuple)、集合(s...

  • Python-07-16

    菜鸟学Python,Python的组合数据类型:列表——案例元组——拓展[dir/help]集合字典列表:...

  • Python最基本语法--目录

    Python第一堂笔记--Python变量和数据类型 Python第二堂笔记--List和Tuple类型 Pyth...

  • 09.程序编程基础3~组合数据类型

    接着上一章内容,继基本数据类型之后,本章进行组合数据类型的讲解 3.2. 组合数据类型 python中为了方便一部...

  • Python组合数据类型笔记

    小白笔记仅记录常规操作中较为不熟悉的操作类型 1、list(str)/str.split():列表中的元素为字符类...

  • Python源码剖析笔记4-内建数据类型

    Python源码剖析笔记4-内建数据类型 Python内建数据类型包括整数对象PyIntObject,字符串对象P...

  • Python - 基本数据类型

    学习资料 Python之旅 相关链接 Python 基础 笔记 常用数据类型 序列(suquence): Pyth...

  • Python 基础

    学习资料 Python之旅 相关链接 Python - 基本数据类型 笔记 字符编码 基本概念 character...

  • python_列表

    python 列表:list 列表:可以存储一组数据的类型;组合数据类型 创建列表 name=list() ...

网友评论

      本文标题:Python组合数据类型笔记

      本文链接:https://www.haomeiwen.com/subject/zqmdbctx.html