python 学习笔记

这篇博客主要介绍了Python中的元组和集合。元组是不可变的数据结构,可以进行拆封操作,而集合是无序且不重复元素的集合,常用于关系测试和消除重复元素。文中详细讲解了元组的创建、赋值以及集合的创建、操作,包括union、intersection、difference和symmetric difference等。
摘要由CSDN通过智能技术生成
  • 元组赋值注意:

一个语句中运算没有前后顺序,换言之,在以下代码中,不是讲a的值改变后才对b进行a+b的运算,就是说b还是原来的没改变的a和b相加之和。

a, b = 0 , 1
while b < 100 :
a, b = b, a+b
#输出菲波那切数列 (1 1 2 3 5 8 ...)

  • 默认情况下,== print() 除了打印你提供的字符串之外,还会打印一个换行符,所以每调用一次 print() 就会换一次行 ==,如同上面一样。
  • 你可以通过 print() 的另一个参数 end 来替换这个换行符,就不会自动换行了
print(b, end = ' ')

创建一个list a
a.append(x) x将被插入到list末尾
a.insert(n,x) x将被插入到list的第n号位置(从0开始计算位置)
如果插入的是一个list,并不是把list中的element插入,而是作为一个整体(二维list)插入到该位置。
a.count(x) 返回x在list中出现的次数(没有的话就是返回0次)
a.remove(x) 值为x的第一项被删除
a.sort() 将list按照从小到大顺序排序 (但前提是所有元素可以比较)
a.extend(x) x为另一个list,将x中所有元素加入到a中
del a[x] 使用del关键词删除指定位置的元素
a.pop(i) 当()中无i参数时,弹出(从list中删除并返回)最后一个元素,若有i参数时,弹出位置为i的元素

可以range函数返回值补充一个list的元素
如下例:

squares = []
for x in range(1,15,2)
    squares.append(x ** 2)
#squares = [ 1, 9 , 25, 49, 81, 121, 169]

但是这样会留下变量x (x=13 )可能对后面的程序有影响。
如下方法可以避免x变量在循环完毕后还存在:

squares = list(map(lambda x: x**2, range(10)))
#等价于下式
squares = [x**2 for x in range(10)]
#这个式子为列表推导式

列表推导式由包含一个表达式的中括号组成,表达式后面跟随一个 for 子句,之后可以有零或多个 for 或 if 子句。结果是一个列表,由表达式依据其后面的 for 和 if 子句上下文计算而来的结果构成。

例如,如下的列表推导式结合两个列表的元素,如果元素之间不相等的话:

>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

等同于

>>> combs = []
>>> for x in [1,2,3]:
...     for y in [3,1,4]:
...         if x != y:
...             combs.append((x, y))
...
>>> combs
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
值得注意的是在上面两个方法中的 forif 语句的顺序。

列表推导式也可以嵌套
>>> a=[1,2,3]
>>> z = [x + 1 for x in [x ** 2 for x in a]]
>>> z
[2, 5, 10]

元组(tuple)

元组是由数个逗号分割的值组成。
可以对元组进行拆封操作,并赋值给多个变量,如下:(divmod(a,b)含义是)

>>> divmod(15,2)
(7, 1)
>>> x, y = divmod(15,2)
>>> x
7
>>> y
1

元组是不可变类型,这意味着你不能在元组内删除或添加或编辑任何值。如果你尝试这些操作,将会出错!(即不能使用del等关键词)

创建只含有一个元素的元组,在值后面跟一个逗号

>>> a = (123)
>>> a
123
>>> type(a)
<class 'int'>   #不加逗号则创建出来的是数字类型而非元组类型
>>> a = (123, )
>>> b = 321,
>>> a
(123,)
>>> b
(321,)
>>> type(a) #通过type()方法可以得知任意变量的数据类型
<class 'tuple'>    #加逗号出来的类型才为tuple
>>> type(b)
<class 'tuple'>

集合

集合是一个无序不重复元素的集
基本功能:关系测试消除重复元素
集合对象支持union(联合),intersection(交),difference(差),symmetric difference(对称差集)(对称差集就是多个集合除去相交部分所有元素的集合)
创建:可以使用大括号{}set()方法
注意
(1)创建空集合必须使用set()方法,因为{}创建的是字典而非集合。
(2)set([iterable]) set()方法括号内必须为可迭代对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值