素数、杨辉三角、封装结构和集合操作(15)——IPython使用和封装解构
IPython使用
帮助
? ##Ipython的概述和简介
help(name) ##查询指定名称和帮助
obj? ##列出obj对象的详细信息
obj?? ##列出更详细的信息
特殊变量
_表示前一次输出
__表示前二次输出
___表示前三次输出
_oh 输出历史
_oh
{4: 100, 5: 100, 6: 100, 10: [1, 2, 3, 4]} c=_
c
[1, 2, 3, 4]
pwd 当前目录
_dh 目录历史
pwd
'C:\\Users\\Administrator' cd c:\
c:\ _dh
['C:\\Users\\Administrator', 'c:\\']
shell命令
!command调用shell命令
!ls
'ls' is not recognized as an internal or external command,
operable program or batch file. !dir
Volume in drive C has no label.
Volume Serial Number is A494-4369 Directory of c:\ 2019/10/12 17:34 <DIR> FusionCloud6.1
2019/10/15 16:33 <DIR> installtool
2019/10/28 15:16 <DIR> Program Files
2019/10/31 18:02 <DIR> Program Files (x86)
2019/08/12 14:45 <DIR> Users
2019/10/31 17:55 <DIR> vms
2019/11/01 09:25 <DIR> Windows
0 File(s) 0 bytes
8 Dir(s) 29,517,729,792 bytes free
魔术方法
IPython的内部实现,和操作系统无关
使用%百分号开头,IPython内置的特殊方法
%magic格式
%开头是line magic
%%开头是cell magic
%timeit statement
def primenumber():
n=9
row=[1]*n ##一次性开辟全部空间
for i in range(n):
old=1
for j in range(i//2):
va=old+row[j+1]
old=row[j+1] ##row[j+1]将被覆盖,通过变量old先将row[j+1]保留
row[j+1]=va
if i !=2*(j+1):
row[i-(j+1)]=row[j+1]
else:
pass
# print('***')
# print(row[:i+1]) ##切片打印列表 %timeit primenumber()
16.7 µs ± 348 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%%timeit setup_code
%%timeit
n=9
row=[1]*n ##一次性开辟全部空间
for i in range(n):
old=1
for j in range(i//2):
va=old+row[j+1]
old=row[j+1] ##row[j+1]将被覆盖,通过变量old先将row[j+1]保留
row[j+1]=va
if i !=2*(j+1):
row[i-(j+1)]=row[j+1]
else:
pass
# print('***')
# print(row[:i+1]) ##切片打印列表
17.4 µs ± 1.69 µs per loop (mean ± std. dev. of 7 runs, 100000 loops each)
def prime1(limit):
primenumbers=[2]
for x in range(3,limit,2):
for i in range(3,int(x**0.5)+1,2):
if x%i==0:
break
else:
primenumbers.append(x)
return primenumbers %timeit prime1(100)
75.1 µs ± 1.14 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each) def prime2(limit):
primenumbers=[3,5]
x=7
step=4
while x<limit:
if x%5!=0:
for i in range(3,int(x**0.5)+1,2):
if x%i==0:
break
else:
primenumbers.append(x)
x+=step
step=4 if step==2 else 2
return primenumbers %timeit prime2(100)
51.1 µs ± 1.45 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
%%js、%%javascript在cell中运行js脚本
%%js
console.log('a'+20) %%js
alert('a'+20)
封装和解构
封装
将多个值使用逗号分割,组合在一起
本质上,返回一个元组,只是省掉了小括号
t3=1,2 ##将1和2封装成元组
t3
(1, 2) type(t3)
tuple
交换
a=1
b=2 temp=a
a=b
b=temp 等价于 a,b=b,a ##等号右边使用封装,等号左边使用解构
解构
把线性结构的元素拆开,并顺序的赋给其它变量
左边接纳的变量数要和右边解开的元素个数一致
a,b=1,2
a,b
(1, 2) a,b=(1,2)
a,b
(1, 2) a,b=[1,2]
a,b
(1, 2) a,b={1,2}
a,b
(1, 2) a,b={'a':10,'b':20} ##非线性结构也可以解构
a,b
('a', 'b') a,b={1,2,3} ##左右两边数量必须一致
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-79-14e2385ba548> in <module>
----> 1 a,b={1,2,3} ValueError: too many values to unpack (expected 2)
使用 *变量名 接受,但不能单独使用
被 *变量名 收集后一定组成一个列表
a,*b={1,2,3}
a,b
(1, [2, 3]) [a,b]=1,2
a,b
(1, 2) [a,b]=(1,2)
a,b
(1, 2) a,b={1,2}
a,b
(1, 2) lst=list(range(1,21,2))
lst
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19] a,*b,c=lst
a,b,c
(1, [3, 5, 7, 9, 11, 13, 15, 17], 19) *b=lst
File "<ipython-input-87-67fc0332f20f>", line 4
SyntaxError: starred assignment target must be in a list or tuple *b,c=lst
b,c
([1, 3, 5, 7, 9, 11, 13, 15, 17], 19) a,*b,*c,d=lst
File "<ipython-input-89-6b365811e22f>", line 4
SyntaxError: two starred expressions in assignment a,*b,c='abcdefghijklmn'
a,b,c
('a', ['b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm'], 'n') a,b,c,*d=1,2,3
a,b,c,d
(1, 2, 3, []) type(d)
list
解构嵌套元素
a,b,c=[1,[2,3],4]
a,b,c
(1, [2, 3], 4) a,b,c,d=[1,[2,3],4]
a,b,c,d
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-95-b018a82d86b2> in <module>
----> 1 a,b,c,d=[1,[2,3],4]
2 a,b,c,d ValueError: not enough values to unpack (expected 4, got 3) a,(b,c),d=[1,[2,3],4]
a,b,c,d
(1, 2, 3, 4)
丢弃变量
如果不关心一个变量,就可以定义变量的名字为_
_是一个合法的标识符,也可以作为一个有效的变量使用,但是_这个变量本身无任何语义,没有任何可读性,定义成下划线就是希望不要被使用
Python中很多库,都使用这个变量,使用十分广泛,请不要在不明确变量作用域的情况下,使用_导致和库中_冲突
lst=1,2,3,4
a,*_,c=lst
a,c,_
(1, 4, [2, 3]) lst=list(range(10))##取出第二个,第四个,倒数第二个元素
_,a,_,b,*_,c,_=lst
a,b,c
(1, 3, 8)
练习
1.从lst=[1,(2,3,4),5]中,提取4出来
lst=[1,(2,3,4),5]
_,(*_,a),_=lst
a
4
2.环境变量JAVA_HOME=/usr/bin(字符串),返回环境变量名和路径
vir='JAVA_HOME=/usr/bin'
a,b=vir.split('=')
print('a={}'.format(a))
print('b={}'.format(b))
a=JAVA_HOME
b=/usr/bin
素数、杨辉三角、封装结构和集合操作(15)——IPython使用和封装解构的更多相关文章
- 经典问题(c++/python)素数、杨辉三角(金字塔型)、统计单词数、简单计算器、密码安全程度、凯撒密码加密、汉诺塔 (python课设实验实例)-- biaobiao88
[编写程序,输人一个大于2的自然数,然后输出小于该数字的所有素数组成的列表.]所谓素数,是指除了1和自身之外没有其他因数的自然数,最小的素数是2,后面依次是3.5.7.11.13... c++代码: ...
- POJ2167Irrelevant Elements[唯一分解定理 组合数 杨辉三角]
Irrelevant Elements Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 2407 Accepted: 59 ...
- 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
该题还是考杨辉三角计算,只不过最后每一行都放入List集合中,然后返回,直接看代码: public static List<List<Integer>> generate(in ...
- hdu5698瞬间移动-(杨辉三角+组合数+乘法逆元)
瞬间移动 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- 杨辉三角(Pascal Triangle)的几种C语言实现及其复杂度分析
说明 本文给出杨辉三角的几种C语言实现,并简要分析典型方法的复杂度. 本文假定读者具备二项式定理.排列组合.求和等方面的数学知识. 一 基本概念 杨辉三角,又称贾宪三角.帕斯卡三角,是二项式系数在三 ...
- [py]函数中yield多次返回,延迟计算特性-杨辉三角
搞清什么是杨辉三角 每行是一个数组, 第一行: [1] 第二行: [1, 1] 第三行: [1, 2, 2, 1] ... 画的好看点就是,不过没啥卵用 1 / \ 1 1 / \ / \ 1 2 1 ...
- LeetCode119.杨辉三角 II
119.杨辉三角 II 描述 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例 输入: 3 输出: [1,3,3,1] 进阶 ...
- JS:递归基础及范例——斐波那契数列 、 杨辉三角
定义:程序调用自身的编程技巧称为递归.一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就 ...
- 2019-02-02 Python学习——生成器杨辉三角,迭代器与可迭代对象的区别
练习 杨辉三角定义如下: 1 / \ 1 1 / \ / \ 1 2 1 / \ / \ / \ 1 3 3 1 / \ / \ / \ / \ 1 4 6 4 1 / \ / \ / \ / \ / ...
随机推荐
- Oracle存储过程(包:PACK_KPI_KERNEL For YS三度评价体系)
CREATE OR REPLACE PACKAGE PACK_KPI_KERNEL IS --定义多级数组 字符串 TYPE TSTRARRY ) INDEX BY BINARY_INTEGER; T ...
- c# WF 第2节 窗体的添加与删除
本节内容: 1: 窗体的添加 2: 窗体的删除 1: 窗体的添加 2: 窗体的删除 3:窗口的运行,发现只有一个form1 是因为
- 1. git 基础
参考文档: https://www.liaoxuefeng.com/wiki/896043488029600 https://git-scm.com/docs/git-fsck 一.介绍 Linus一 ...
- NG-ZORRO 使用相关
Upload上传 import { Component, Input, Output, EventEmitter, Inject } from '@angular/core'; import { Nz ...
- NOIP模拟赛 拓展
题目描述 Description \(φ\) 函数是数论中非常常用的函数.对于正整数 \(x\) ,\(φ(x)\) 表示不超过 \(x\) 的所有正整数与 \(x\) 互质的个数. 现在我们对它进行 ...
- A1044 Shopping in Mars (25 分)
一.技术总结 可以开始把每个数都直接相加当前这个位置的存放所有数之前相加的结果,这样就是递增的了,把i,j位置数相减就是他们之间数的和. 需要写一个函数用于查找之间的值,如果有就放返回大于等于这个数的 ...
- 'GL_EXT_shader_framebuffer_fetch' : extension is not supported
在使用安卓模拟器加载Flutter应用时, 提示'GL_EXT_shader_framebuffer_fetch' : extension is not supported: D/skia (1404 ...
- 表演的艺术,妖尾回合制战斗系统客户端设计[Unity]
妖尾历经几年开发,终于在今年6月底顺利上线,笔者从2017年初参与开发,主要负责妖尾战斗系统开发.战斗作为游戏的核心玩法系统,涉及很多技术点,希望能借几篇文字,系统性总结MMORPG战斗系统的开发经验 ...
- (四十一)golang--goroutine
首先得了解: 进程 线程 并发 并行 Go协程和Go主线程: 主线程:相当于进程:直接作用于cpu上,是重量级的,是物理态的: 协程:相当于轻量级的线程:由主协程开启,是逻辑态的: Go协程的特点: ...
- 移动端js触摸touch详解(附带案例源码)
移动端触摸滑动原理详解案例,实现过程通过添加DOM标签的触摸事件监听,并计算触摸距离,通过距离坐标计算触摸角度,最后通过触摸角度去判断往哪个方向触摸的. 触摸的事件列表 触摸的4个事件: touchs ...