计算机基础知识及列表操作

冯诺依曼体系结构

  • 运算器:计算器中执行各种算术和逻辑运算操作的部件。

  • 控制器:是计算机的神经中枢,指挥全机中各个部件自动协调工作。

  • 存储器:用来存储数据和指令等的记忆部件。

  • 输入设备:向计算机输入数据和信息的设备。

  • 输出设备:是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设别操作等。

编程语言的分类

  • 低级语言:机器语言、汇编语言(面向机器的语言)

  • 高级语言:接近自然语言和数学语言的计算机语言

对字符串的操作

  • 字符串插值

    a = 100
    b = 200
    c = f `{a}, {b}`  # f前缀,3.6新特性
    print(c)
    
    --->100, 200
    
  • 续行符

    a = ('123\  # 在字符串后面添加\后回车,在下一行继续输入
    456')
    print(a)
    
    --->'123456'
    

python标识符

  • 标识符

    1. 由字母,下划线和数字组成

    2. 只能以字母或下划线开头

    3. 对大小写敏感

  • 常量

    python中没有常量,通常人们将全部大写的标识符当做常量

  • 字面常量

    一个单独的量,例如:1

解释型语言与编译型语言的区别

编译型语言:把源代码转换成目标机器的cpu指令

解释型语言:解释后将源代码转换为字节码,运行在虚拟机上,解释器执行中间代码

几种特殊的十六进制数字

0x31 —> 49

0x41 —> 65

0x61 —> 97

0x30 —> 48

0x7F —> 127

二进制数末尾是1,对应的十进制数一定是奇数

二进制转十进制的方法

例:0b1110 = 1*2**3 + 1*2**2 + 1*2**1 + 0*2**0 = 14

位运算操作符

  1. **&😗*是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位都为1时,结果位才为1。参与运算的两个数均以补码出现。
  2. **|:**只要对应的二个二进位有一个为1时,结果位就为1。
  3. **^:**当两对应的二进位相异时,结果为1。

原码,反码与补码

  • 正数的原码 = 反码 = 补码
  • 补码的补码就是原码
  1. 反码:符号位不变,其余按位取反
  2. 补码:符号位不变,其余按位取反,末尾加1

运算符优先级

  • 算术运算符 > 比较运算符 > 逻辑运算符
  • 单目运算符 > 双目运算符

真值表

对象/常量-值-
‘’
“string”
0
>=1
<=-1
()
[]
{}
None

循环和分支

  • 程序控制

    分支:只要有一个分支被执行,其他分支就不会被执行

    循环:条件满足就反复执行,不满足就不再执行

    分支和循环结构可以嵌套使用

  • continue

    • 跳过当前只一次循环,直接进入下一次循环
  • break

    • 结束当前循环
    # 计算1000以内被7整除的前20个正整数
    count = 0
    for i in range(7, 1000, 7):	
    print(i)
    count += 1
    if count >= 20:
    print(count)
    break
    
  • else子句

    for i in range(2):
    print(2)
    else:
    print('end')
    
    --->0
    	1
    	end
    

python内置数据结构

  • 分类

    • 数值型
      • int, float, complex, bool
    • 序列
      • 字符串str, bytes, bytearray
      • 列表list, 元祖tuple
    • 键值对
      • 集合set
      • 字典dict

数字的处理函数

  • round()
  • math.floor()
  • math.ceil()
  • min()
  • max()
  • pow()

列表

  • 列表内的元素可以是任意对象(数字,字符串,对象, 列表等)
  • 列表内元素是有序的,可以使用索引(index)查看
  • 列表是可变的
  • 列表是线性的数据节构(顺序结构)
  • 列表是容器,容器都是可迭代对象

列表与链表的区别

  • 列表在内存空间中以连续的空间存在,而链表不需要连续的内存空间
  • 在列表中通过索引查找数据速度很快,但增加数据效率较低;相反,链表查找数据很慢,但增加数据效率很高

栈与队列

  • 栈模型是后进先出,类似于从口袋里拿东西
  • 队列模型是先进先出,类似于排队买票

几种操作列表的方法

  • list.index(value)

    • 该方法可以查看元素在list中的索引,但效率较低。其原理为遍历list
  • list.count(value)

    • 该方法可以统计value在list中的个数,属于完全遍历列表,效率很低,时间复杂度高。O(n)
  • len(list)

    • 此方法可以显示list的长度。这个方法对效率影响较低。O(1)
  • list[index] = value

    • 次方法可以修改列表中的元素
  • list.append()

    • 向list尾部增加元素
  • list.insert(index, value)

    • 可以向list任意位置插入元素
  • list.extend(value)

    • 此方法相当于append,但可以一次性添加多个元素,append只能一次添加一个
  • append与insert的异同:

    • 两种方法都无返回值,是就地修改
    • append不可以越界,insert可以越界
  • [5] * 5 —> [5, 5, 5, 5, 5] 将列表中的元素重复五次,之后放在一个新的列表里

列表复制

  • **浅拷贝:**遇到引用类型时,只是复制了一个引用
  • **深拷贝:**创建了一个新的副本

删除列表元素

  • list.remove(元素)
    • 此方法会删除在列表里从左到右找到的第一个元素
  • list.pop()
    • 尾部弹出一个元素并返回。
  • list.clear()
    • 清空列表
  • list.reverse()
    • 翻转列表

列表排序

  • list.sort(key=None, reverse=False)
    • 此方法默认升序排列列表里的元素,降序将False改为True

随机数模块

  • random.choice(list)
    • 随机返回list里的一个元素
  • random.shuffle(list)
    • 打乱list里元素顺序
  • random.randint(n, y)
    • 随机返回[n, y]中的一个元素
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值