首页 > 编程语言 >【python基础02】 序列,元组,列表,字典,位运算

【python基础02】 序列,元组,列表,字典,位运算

时间:2024-07-26 19:29:42浏览次数:12  
标签:02 copy python li 序列 li2 print 拷贝 元组

python运算符

  • 位运算符
    • & :按位与
    • | :按位或
    • ^ :按位异或
    • ~ :按位取反
    • << :左移位
    • >> :右移位
x = 0b11000110
y = 0b10100101
print(bin(x&y)) # 0b0010
print(bin(x|y))
print(bin(x^y))
print(bin(~x)) # 第一位是表示正负
print(bin(x>>2)) # 去除右边两位
print(bin(x<<2)) # 右边增加两位 
'''
0b10000100
0b11100111
0b1100011
-0b11000111
0b110001
0b1100011000
'''
  • 赋值运算符
    • = 赋值
    • += a += b >>> a = a+b 加法赋值
    • -= 减法赋值
    • *= 乘法赋值
    • /= 除法赋值
    • %= 取余
    • **= 幂
    • //= 整除
    • 优先级 括号,索引切片,乘方,正负,按位或~ not ,乘除,加减,移位>> ,或&,异或,或,比较,赋值

数学函数

常用数学函数 使用自带的库math

  • abs() 绝对值
  • ceil() 向上取整 整数
  • max() 最大值
  • min() 最小值
  • pow() 乘方
  • sqrt() 平方根
  • exp() e的幂次方

随机数

使用random库

  • randint() 指定范围随机整数
  • random() 0-1随机小数
  • choice() 从序列中随机选一个元素
  • seed() 随机种子,设置之后保证每次的随机数相同
  • shuffle() 打乱,修改原序列

三角函数

math库中的内置三角函数

  • sin() cos() tan() cot() 三角函数
  • acos() asin() atan() 反三角函数
  • degrees() 弧度值转化为角度°值
  • randians() 角度变弧度

数学常量

math库中内置

  • pi 圆周率
  • e自然底数

条件语句

  • if-elif-else 满足if或者elif后面的条件判断语句就会执行,都没有满足则执行else,elif可以有多个
  • while 无限循环 while后的条件判断为真则一直执行
  • break 打破循环,跳出break所在的循环体
  • continue 跳过本次循环 进行下一次循环,continue 后面的语句不执行
  • for 配合可迭代对象进行使用range() 和列表等序列
  • range() 返回一个可迭代对象 star,end,stp
  • pass 占位使用,不执行任何效果
print([i for i in range(5,1,-1)])# [5, 4, 3, 2]
# if-elif-else 是一个代码块,只能执行其中一个关键词后的语句
# break只能跳出当前循环,不能跳出外层的循环

python序列

python中有三种基本的序列类型 list tuple range,字符串,元组也是序列类型,序列类型都可以使用for进行遍历

序列类型可以进行以下操作

  • 运算
    • in,not in 判断是否在序列中
    • +同类型的序列合并
    • *复制
    • []进行切片索引 [][][i]索引 [i:j] [i:j:s] 切片
    • len() 长度
    • min(),max() 最大值 最小值
    • .index() 返回索引
    • .count() 统计指定元素的数量
  • 不可变序列类型 字符串 元组
  • 可变序列类型 列表 集合,不能作为字典的键
    • 可以使用[] 的索引切片的浅拷贝操作进行修改可变序列的值
    • 可以使用del删除部分值
    • .append() 添加元素
    • .clear() 清空
    • .copy() 浅拷贝
    • .insert() 指定位置插入
    • .remove() 删除指定位置的元素
    • .reverse() 逆序
li = [1,2,3]
li2 = li.copy()
li3 = li[:]
print(id(li2),id(li3),id(li))

# 2416511275392 2416513941440 2416511277312

li = [[1, 2], 3]
li2 = li.copy()
li3 = li[:]
li[0].append(4)  # [[1, 2, 4], 3] [[1, 2, 4], 3]a

print(li2,li3)
'''
在这个例子中,li2 和 li3 都是 li 的浅拷贝。在 Python 中,列表的浅拷贝意味着新列表包含了旧列表中元素的副本。由于列表中的元素都是不可变对象(整数),所以这种拷贝已经是足够深的,即它实际上就是一种深拷贝的效果。
'''
  • 列表list()

    • 使用[] 标识

    • .sort()原列表中的元素进行排序 reverse=True 降序 否则为升序

    • **sorted()**返回排序后的列表

    • 推导式 可以根据条件直接生成列表

      • [el for el in {迭代对象} if {条件}]
li = [2,3,4,1]
li.sort(reverse = True)  
print(li) # [4, 3, 2, 1]
print(sorted(li,reverse=False)) #[1, 2, 3, 4]
print([el for el in range(10) if el%2 == 0])#[0, 2, 4, 6, 8]

  • 元组 tuple()
    • 使用() 标识
    • 不可变序列类型
print(tuple([1]))  # (1,)

python 字典dict

  • 字典是可变容器 映射类型
  • 推导式{key:values for key,values in {可迭代对象iter} if {条件}}
  • key:vlues 的形式存储
  • 无序,不能使用下标索引,区别于序列
  • list() 返回字典中的键列表
  • **len()**键值对的数量
  • dict[key] 映射字典中的值
  • d[key] = value 键赋值,不存在则创建
  • del **d[key] ** 删除键值对
  • in,not in 判断是否存在
  • **clear() ** 清除
  • **copy() ** 浅拷贝
  • items() 返回键值对
  • update([other]) 更新字典 覆盖原有的键
  • pop(key[, default]) 删除并返回值,不存在返回默认值,没有默认值报错
  • get() 获取值,没有返回默认值,默认值默认为None

集合set

python中的无序可变类

[内置类型 — Python 3.12.4 文档]

  • .add() 添加元素
  • .update() 添加元素
  • **.remove() ** 移除元素
  • **.pop() ** 随机删除元素
  • 推导式{el for el in iter {条件}}

深拷贝、浅拷贝

li1 = [1,2,3]  # 只有数字
li2 = [li1,22,33]  # 包含对象,深层嵌套

# li = li1 # 没有创建新的对象,只是对原来的列表进行引用
# print(id(li1)==id(li1))  # True  同一个内存地址 只是引用

# 浅拷贝 深拷贝
# 切片 copy()方法是浅拷贝
# 浅拷贝和深拷贝都是创建了一个新的对象,
# 开辟出新的内存储存原数据,不是对原数据的引用
# import copy
# li_deep = copy.deepcopy(li1)
# li_no_deep = li1[:]
# print(id(li1),id(li_deep),id(li_no_deep)) 
 # 2280558942464 2280560412544 2280560513408  地址不同

# 浅拷贝只是复制对象本身,不复制嵌套对象
# 嵌套对象只是复制其引用
# 修改嵌套对象会改变原对象中的嵌套对象

# li = li2.copy()
# li[0][0] = 'aaa'
# print(li,li2) #[['aaa', 2], 22, 33] [['aaa', 2], 22, 33] 

# 深拷贝
# 复制所有嵌套对象,修改不会导致原对象的改变  递归复制每一个元素
# import copy
# li = copy.deepcopy(li2)
# li[0][0] = 'aaa'
# print(li2,li)  [[1, 2], 22, 33] [['aaa', 2], 22, 33]

索引切片都是浅拷贝,copy()也是浅拷贝

标签:02,copy,python,li,序列,li2,print,拷贝,元组
From: https://blog.csdn.net/m0_73658021/article/details/140698136

相关文章

  • Linux下学习Python包管理器Poetry教程 零基础入门到精通
    Poetry[官网-Poetry]https://python-poetry.org/安装pipinstallpoetry简单使用初始化poetry项目cd~&&mkdirdemopoetryinit管理虚拟环境poetry预设了很多自己的虚拟环境配置,这些配置可以通过poetryconfig进行修改当用户在执行poetryadd等指令......
  • python 输入输出
    输入输出**注**所有内容均是在pycharm中通过python3.7的解释器进行运行的格式:变量=input('提示词')#输入提示词在控制台显示,要输入的内容在提示词后面输入print(变量)#输出print('输出内容')#在''内部的内容原封不动......
  • ResT(NeurIPS 2021)论文解读
    paper:ResT:AnEfficientTransformerforVisualRecognitionofficialimplementation:https://github.com/wofmanaf/ResT存在的问题作者指出现有Transformer在视觉识别任务中存在以下几个问题:低级特征提取困难:Transformer直接对原始输入图像的patch进行标记化处理,这使得它......
  • hive02_SQL操作
    HiveDDL操作操作前需要保证hive成功启动:#启动HiveServer2hive--servicehiveserver2&#启动MetaStorehive--servicemetastore&#进入hive命令行界面beeline-ujdbc:hive2://node03:10000-nroot数据库操作操作类似于MySQL数据库操作。表基本操作h......
  • 2024中国工业互联网安全大赛智能家电行业赛道选拔赛
    流量分析的附件链接:https://pan.baidu.com/s/1UlWzfmsmRsZTR56FzXLuEg?pwd=6666提取码:6666恶意攻击流量描述:应用系统被植入了恶意后门,并从流量中识别其中的flag,提交格式:fag{XXXXXXXX}追踪这个流量解码过滤或者工具一把梭flag{39084EEF2D28E941F53E4A1AA1......
  • 2024牛客多校Bit Common & Bit More Common
    ABitCommon时间限制:3s(C++/C)/6s内存限制:1048576K(C++/C)/2097152K题目描述Giventwointegers\(n\)and\(m\),amongallthesequencescontaining\(n\)non-negativeintegerslessthan\(2^m\),youneedtocountthenumberofsuchsequences\(A\)tha......
  • 2024LitCTF
    secret这首音乐好听,听完了,中间有段杂音去AU看看 中间有一段藏了东西,放大 出flag了flag{Calculate_Step_By_Step}原铁,启动!解压出来是一张二维码扫出来是原神去010看看  看到有压缩包,提取出来得到一个压缩包,里面是四张图片  去网站上合并    Li......
  • P10218-魔法手杖
    题面\(O(nk^2)\)我们考虑如果确定了\(ans\),如何判断是否合法?考虑从高到低逐位确定\(x\)。设\(ans\)和\(x\)的第\(i\)位为\(ans_i,x_i\)。分类讨论一波:如果\(ans_i\)为:0:无论\(x_i\)取什么,总有一边在异或\(x\)后第\(i\)位为1。\(x_i=0\),那么右子树一定......
  • 2024矩阵杯初赛
      矩阵杯WP没问题的话就进决赛了 一眼看是USB流量  但这题不考,回到题目CTF异世界的代码监察员lulu猪的照片被人偷拷贝走时触发了保护机制,不仅对图片进行了隐写术.js的加工,还留下了传输的痕迹,神奇的Misc选手能证明这张图片是被偷拷走的吗再看看提示:Tointroduceyou,......
  • 2024 牛客多校 4
    https://ac.nowcoder.com/acm/contest/81599gmin(x,y)没写minWA了一发。居然能过样例,应该会报warning但我从来不看。ctrlbackspace还是得看着j读完就会了但做的并不快,当时k还没读k一开始在一棵线段树上分别维护数字和符号,共用一个mdf,比较混乱,还有顺序问题。重构......