我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python第二周 学习笔记(3)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python第二周 学习笔记(3)


1.运用数组实现求10万以内质数:

prime = [2]
for i in range(3,100000,2):
    flag = False
    up = int(i**0.5)+1
    for j in prime:
        if i % j == 0:
            flag = False
            break
        if j >= up:
            flag = True
            break    
    if flag:
        prime.append(i)
print(len(prime))

2.杨辉三角:

方法一(1)迭代后首尾加元素1:

n=6
pre=[[1]]
for i in range(n):
    line=pre[i]
    temp=[1]
    for j in range(i):
        temp.append(line[j]+line[j+1])
    temp.append(1)
    pre.append(temp)
print(pre)

方法一(2):

n = 6
pre = [1]
for i in range(n):
    temp = [1]
    for j in range(i):
        temp.append(pre[j] + pre[j + 1])
    temp.append(1)
    print(pre)
    pre = temp

方法二 列表前后或后补元素0迭代:

n=6
pre=[1]
for i in range(1,n):
    pre.append(0)
    newline=[]
    for j in range(i+1):
        var=pre[j-1]+pre[j]
        newline.append(var)
    print(newline)
    pre=newline

方法三(1)提前创建好宽度合适、充满1的列表,将计算的结果替换列表中对应位置的数,

采用对称性一次循环将对称的两个元素一并替换:

n=6
triangle=[]
for i in range(n):
    temp=[1]*(i+1)
    for j in range(1,i//2+1):
        var=triangle[j-1]+triangle[j]
        temp[j]=var
        if i!=2*j:
            temp[-j-1]=var
    triangle=temp
    print(temp)

方法三(2):

n = 6
triangle = []
for i in range(n):
    temp = [1] * (i + 1)
    triangle.append(temp)
    for j in range(1,i // 2 + 1):
        var = triangle[i - 1][j - 1] + triangle[i - 1][j]
        temp[j] = var
        if i != 2 * j:
            temp[- j - 1] = var
    print(temp)
    pre = temp

方法四 只开辟最大长度的一个充满1的列表,加入一个临时变量存储替换的元素,

参与下一次计算,采用对称性,注意更改对称元素时,其索引值需加入一个偏移量,

输入时对列表切片:

n = 6
triangle = [1] * n
for i in range(n):
    temp = 1
    for j in range(1,i // 2 + 1):
        var = temp + triangle[j]
        temp = triangle[j]
        triangle[j] = var
        if i != j * 2:
            triangle[- j - (n - i)] = var
    print(triangle[: i + 1])

3.冒泡法排序

  • 两两比较大小,交换位置。如同水泡咕嘟咕嘟往上冒
  • n个数从左至右,编号从0开始到n-1,索引0和1的值比较,如果索引0大,则交换两者位置,如
    果索引1大,则不交换。继续比较索引1和2的值,将大值放在右侧。直至n-2和n-1比较完,第
    一轮比较完成。第二轮从索引0比较到n-2,因为最右侧n-1位置上已经是最大值了。依次类推,
    每一轮都会减少最右侧的不参与比较,直至剩下最后2个数比较。
  • 时间复杂度O(n**2)

方法一:

lst=[9,8,7,6,5,4,3,2,1]
cnt=0
cnt_swap=0
for i in range(len(lst)-1):
    for j in range(len(lst)-i-1):
        cnt+=1
        if lst[j]>lst[j+1]:
            lst[j],lst[j+1] = lst[j+1],lst[j]
            cnt_swap+=1
print(lst,cnt,cnt_swap)

方法二(优化):

优化点:如果当一个内循环结束后,并没有发生元素交换的操作,则剩下的元素已经是顺序的了,无需再往下执行

#lst = [9,8,7,6,5,4,3,2,1]
#lst = [1,2,3,4,6,5,7,8,9]
lst = [2,1,3,4,5,6,7,8,9]
cnt = 0
cnt_swap = 0
for i in range(len(lst) - 1):
    flag = False 
    for j in range(len(lst) - i - 1):
        cnt += 1
        if lst[j] > lst[j + 1]:
            lst[j],lst[j + 1] = lst[j + 1],lst[j]
            flag = True
            cnt_swap += 1
    if not flag:
        break
print(lst,cnt,cnt_swap)

4.从lst = [1,(2,3,4),5]中,提取4出来

lst = [1, (2, 3, 4), 5]
_, (*_, a), _ = lst
print(a)

5.环境变量JAVA_HOME=/usr/bin,返回变量名和路径

str = 'JAVA_HOME=usr/bin'
name, path = str.split('=')
print(name, path)

6.你的好友A、B、C,他的好友C、B、D,求共同好友

a = {'A', 'B', 'C'}
b = {'C', 'B', 'D'}
print(a & b)

7.XXX与群里其他人都不是微信朋友关系

XXX_friends = {'A', 'B', 'C'}
b = {'E', 'F', 'D'}
if not XXX_friends & b:
    print('Warning! :XXX')

8.有一个API,要求权限同时具备A、B、C才能访问,用户权限是B、C、D,判断用户是否能够访

问该API

sys_auth = {'A', 'B', 'C'}
user_auth = {'B', 'C', 'D'}
if sys_auth <= user_auth : #sys_auth是B的子集
    print('Pass!')
else :
    print('Insuffitient auth!') 

9.有一个API,要求权限具备A、B、C任意一项就可访问,用户权限是B、C、D,判断用户是否能

够访问该API

sys_auth = {'A', 'B', 'C'}
user_auth = {'B', 'C', 'D'}
if sys_auth & user_auth:
    print('Pass!')
else :
    print('Insuffitient auth!')

10.一个总任务列表,存储所有任务。一个完成的任务列表。找出为未完成的任务

mission = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'}
completed_mission = {'C', 'E', 'G'}
print(mission - completed_mission)

11.随机产生2组各10个数字的列表,如下要求:

  • 每个数字取值范围[10,20]

  • 统计20个数字中,一共有多少个不同的数字?

  • 2组中,不重复的数字有几个?分别是什么?

  • 2组中,重复的数字有几个?分别是什么?

    from random import randint
    a = []
    b = []
    for i in range(20):
    if i > 9:
        a.append(randint(10, 20))
    else:
        b.append(randint(10, 20))
    print(a, b)
    set_a = set(a)
    set_b = set(b)
    print('set_union: ', set_a | set_b)
    print('set_minus: ', set_a & set_b)
    print('set_intersect: ', set_a ^ set_b)

12.求杨辉三角的第m行第k个元素:

方法一:

a = int(input('a')) - 1
b = int(input('b'))
mul_a = 1
mul_c = 1
for i in range(b - 1):
    mul_a *= a
    a -= 1
for j in range(1, b):
    mul_c *= j
print(mul_a, mul_c, mul_a / mul_c)

方法二:

n = int(input('>>>')) - 1
m = int(input('>>>')) - 1
r = n - m
l=[]
mul=1
for i in range(1, n + 1):
    mul *= i
    if i == m:
        l.append(mul)
    if i == r:
        l.append(mul)
    if i == n:
        l.append(mul)
print(l[2] // (l[0] * l[1]))

13.给定一个矩阵,求其转置矩阵:

方法一:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_matrix = []
for i in range(len(matrix[0])):
    temp = []
    for j in range(len(matrix)):
        temp.append(matrix[j][i])
    new_matrix.append(temp)
print(new_matrix)

方法二:

matrix = [[1, 2, 3], [4, 5, 6]]
tm = []
for row in matrix:
    for i ,col in enumerate(row):
        if len(tm) < i + 1:
            tm.append([])
        tm[i].append(col)
print(tm)

方法三:

对于大矩阵速度更快

matrix = [[1, 2, 3], [4, 5, 6]]
tm = [[0 for col in range(len(matrix))] for row in range(len(matrix[0]))]
for i,row in enumerate(tm):
    for j, col in enumerate(row):
        tm[i][j] = matrix[j][i]
print(tm)

14.随机产生10个数字

  • 要求

    • 每个数字取值范围[1,20]

    • 统计重复的数字有几个?分别是什么?

    • 统计不重复的数字有几个?分别是什么?

      方法一:

import random
lst = []
rep_lst = []
uniq_lst = []
for i in range(10):
    temp = random.randint(1, 20)
    if temp in lst and temp not in rep_lst:
        rep_lst.append(temp)
    lst.append(temp)
for j in lst:
    if j not in rep_lst:
        uniq_lst.append(j)
print(lst)
print(len(rep_lst), ': ', rep_lst)
print(len(uniq_lst), ': ', uniq_lst)

方法二:

import random
nums = []
for _ in range(10):
    nums.append(random.randrange(21))
print(nums)
length=len(nums)
samenums = []
diffnums = []
states=[0] * length
for i in range(length):
    flag = False
    if states[i] == 1:
        continue
    for j in range(i + 1, length):
        if states[j] == 1:
            continue
        if nums[i] == nums[j]:
            flag = True
            states[j] = 1
    if flag:
        samenums.append(nums[i])
        states[i] = 1
    else:
        diffnums.append(nums[i])
print('{}\n{}'.format(samenums, diffnums))

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python第二周 学习笔记(3)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python第二周 学习笔记(3)

1.运用数组实现求10万以内质数:prime = [2]for i in range(3,100000,2): flag = False up = int(i**0.5)+1 for j in prime:
2023-01-31

Python第一周 学习笔记(3)

一、数值型1.数据类型分类:int:整数python3的int就是长整型,且没有大小限制,受限于内存区域的大小int(x) 返回一个整数float:浮点数有整数部分和小数部分组成。支持十进制和科学计数法表示。只有双精度型。float(x)
2023-01-31

Python第六周 学习笔记(3)

1.指定一个源文件,实现copy到目标目录个人实现:def filecopy(filename:str, cp_filename:str): ''' Author: lijl Description: 复制文件 ty
2023-01-31

第一周Python学习笔记

Python 基本语法:①  Python程序的格式:1.用代码高亮来标识函数丶语句等等 本身的代码高亮并没有实际的意义,只是用来辅助编程人员和阅读人员 更好的识别   2.程序以缩进来标识语句,缩进用来标识代码间的层次关系,缩进的长度也必
2023-01-30

Python第五周 学习笔记(2)

一、实现一个cache装饰器,实现可过期被清除的功能简化设计,函数的形参定义不包含可变位置参数、可变关键词参数和keyword-only参数可以不考虑缓存满了之后的换出问题1)原始def cache(fn): import inspe
2023-01-31

Python第九周 学习笔记(1)

get(self, instance, owner)访问属性时调用set(self, instance, value)当对属性赋值时调用delete(self, instance)删除属性时调用self指代当前实例instance是owne
2023-01-31

Python第八周 学习笔记(1)

基本概念个体继承自父母,继承了父母的一部分特征,但也可以有自己的个性子类继承了父类,就直接拥有了父类的属性和方法,也可以定义自己的属性、方法,甚至对父类的属性、方法进行重写Python继承实现class Cat(Animal) 括号中为该类
2023-01-31

Python学习笔记—第二章—IPyth

书目:Python(Unix和Linux系统管理指南)学习日期:20130807知识点总结:安装IPython:源码安装:tar zxvf ipython-0.13.2.tar.gzpython setup.py install通过系统的软
2023-01-31

python学习笔记(3)

在大概了解了程序之后,我也买了本python书学习一下,因为现在新版的python3.4.0已经不再兼容2.x.x的内容,书虽然很新,但是有些例子还是用的过去的。1.比如在3.0中print 42不能再产生输出了,要改成print(42)>
2023-01-31

python 学习第二周总复习

目录 数据类型内置方法 数字类型内置方法 整型 浮点型 字符串类型内置方法 列表类型内置方法 元祖类型
2023-01-31

python 学习笔记第二章:安装pyt

记得上次写python的学习笔记是三个月以前了,期间看过,也放下过,这次要坚持下来,一鼓作气,吃下python。   本文内容主要是根据《Python 简明教程》和自己的一些理解去写的,有问题,还请指出。 一、Linux 下安装    如果
2023-01-31

Python学习笔记(二)

学完了基础中的基础后,我们准备深入基础中的函数、类和对象。function函数:正如英文单词描述的,函数就是“功能”的意思,把完成一个功能所需要的代码打包起来放在一个函数下可以方便以后程序的重复调用,也能使整体代码条理清晰。正如前面用到的p
2023-01-30

Python学习笔记(3)--- Fla

在安装flask前,首先安装pip安装地址:https://pip.pypa.io/en/stable/installing.html#install-pip下载(保存):在dos命令下执行 python get-pip.py安装然后 执行
2023-01-31

Python 3 学习笔记:Excel

安装模块OpenPyXL 模块是一个第三方模块,所以需要使用 pip 工具安装,pip install openpyxl文件结构首先,我们需要了解一下 Excel 文件的基本结构,一个 Excel 文件被称为一个工作薄,工作薄中可以包含多个
2023-01-31

Python学习笔记(3)Python中

EscapeWhat it does.含义 \\Backslash ()反斜杠\'Single-quote (')单引号\"Double-quote (")双引号\aASCII bell (BEL)响铃符\bASCII backspace
2023-01-31

学习笔记-小甲鱼Python3学习第十二

列表的一些常用操作符:比较操作符、逻辑操作符、连接操作符、重复操作符、成员关系操作符比较操作符:>>> list1 = [123,456]>>> list2 = [234,123]>>> list1 > list2      #只比较第一个
2023-01-31

学习笔记-小甲鱼Python3学习第二讲

测试题:什么是BIF?built-in function,是python内置函数的意思,python内置了非常多的函数,方便程序员直接调用,快速编写脚本程序用课堂上小甲鱼教的方法数一数 Python3 提供了多少个 BIF?使用dir(bu
2023-01-31

学习笔记-小甲鱼Python3学习第二十

斐波那契数列:斐波那契数列的迭代实现月数123456789101112兔子总对数1123581321345589144用数学函数定义:             1,当n = 1F(n)       1,当n = 2             
2023-01-31

python scrapy学习笔记(二)

使用scrapy批量抓取,参考http://python.jobbole.com/87155一、创建项目# scrapy startproject comics创建完成后的目录结构.├── comics│   ├── __init__.py
2023-01-31

学习笔记3

一文件查找和压缩1文件查找locate 搜索依赖于数据库,非实时搜索,搜索新建文件需手动更新,适于搜索稳定不频繁修改文件 find 实时搜索,精确搜索,默认当前目录递归搜索 find用法 -maxdepth l
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录