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使用和封装解构的更多相关文章

  1. 经典问题(c++/python)素数、杨辉三角(金字塔型)、统计单词数、简单计算器、密码安全程度、凯撒密码加密、汉诺塔 (python课设实验实例)-- biaobiao88

    [编写程序,输人一个大于2的自然数,然后输出小于该数字的所有素数组成的列表.]所谓素数,是指除了1和自身之外没有其他因数的自然数,最小的素数是2,后面依次是3.5.7.11.13... c++代码: ...

  2. POJ2167Irrelevant Elements[唯一分解定理 组合数 杨辉三角]

    Irrelevant Elements Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 2407   Accepted: 59 ...

  3. 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。

    该题还是考杨辉三角计算,只不过最后每一行都放入List集合中,然后返回,直接看代码: public static List<List<Integer>> generate(in ...

  4. hdu5698瞬间移动-(杨辉三角+组合数+乘法逆元)

    瞬间移动 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

  5. 杨辉三角(Pascal Triangle)的几种C语言实现及其复杂度分析

    说明 本文给出杨辉三角的几种C语言实现,并简要分析典型方法的复杂度. 本文假定读者具备二项式定理.排列组合.求和等方面的数学知识. 一  基本概念 杨辉三角,又称贾宪三角.帕斯卡三角,是二项式系数在三 ...

  6. [py]函数中yield多次返回,延迟计算特性-杨辉三角

    搞清什么是杨辉三角 每行是一个数组, 第一行: [1] 第二行: [1, 1] 第三行: [1, 2, 2, 1] ... 画的好看点就是,不过没啥卵用 1 / \ 1 1 / \ / \ 1 2 1 ...

  7. LeetCode119.杨辉三角 II

    119.杨辉三角 II 描述 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例 输入: 3 输出: [1,3,3,1] 进阶 ...

  8. JS:递归基础及范例——斐波那契数列 、 杨辉三角

    定义:程序调用自身的编程技巧称为递归.一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就 ...

  9. 2019-02-02 Python学习——生成器杨辉三角,迭代器与可迭代对象的区别

    练习 杨辉三角定义如下: 1 / \ 1 1 / \ / \ 1 2 1 / \ / \ / \ 1 3 3 1 / \ / \ / \ / \ 1 4 6 4 1 / \ / \ / \ / \ / ...

随机推荐

  1. java面试遇到的坑[第三期]

    亲爱的同学们,本人因为连续几周遭遇一定的工作压力几乎被压榨的只剩一个空壳,还好经常锻炼有一副好身体(皮囊),算是挺过来了.为了大家年前能早早入坑马不停蹄回到阵地给大家带来第二期的面试坑题,有些题是大家 ...

  2. 初学JavaScript正则表达式(十一)

    JavaScript的对象属性 整理自慕课网教学 点此进入

  3. pushgateway

    下载pushgateway wget https://github.com/prometheus/pushgateway/releases/download/v0.9.0/pushgateway-0. ...

  4. CloudCompare中对点云进行降采样和剪裁

    降采样: Edit=>Subsample 出现一个弹窗,可以选择3种降采样的方式:Random, Space, Octree. 下面用一个例子来说明3种方式.例子是一个5.88M个点的点云文件( ...

  5. 工具资源系列之给 windows 虚拟机装个 centos

    前面我们已经介绍了如何在 Windows 宿主机安装 VMware 虚拟机,这节我们将利用安装好的 VMware 软件安装 centos 系统. 前情回顾 由于大多数人使用的 Windows 电脑而工 ...

  6. Educational Codeforces Round 69 (Rated for Div. 2) D. Yet Another Subarray Problem 背包dp

    D. Yet Another Subarray Problem You are given an array \(a_1, a_2, \dots , a_n\) and two integers \( ...

  7. 阿里Sentinel整合Zuul网关详解

    前面我们讲解了Sentinel整合Spring Cloud Gateway,详细请查看文章:阿里Sentinel支持Spring Cloud Gateway啦 目前来说,大部分公司线上的网关应该是Zu ...

  8. Unity开发实战探讨-资源的加载释放最佳策略

    注:本文中用到的大部分术语和函数都是Unity中比较基本的概念,所以本文只是直接引用,不再详细解释各种概念的具体内容,若要深入了解,请查阅相关资料. Unity的资源陷阱 游戏资源的加载和释放导致的内 ...

  9. eclipse激活jrebel

    1.原本jrebel已经激活了,某天突然失效了.报错如下: JRebel: ERROR Failed to obtain seat. Unable to connect to license serv ...

  10. SpringBoot-@ControllerAdvice 拦截异常并统一处理

    SpringBoot是为了简化Spring应用的创建.运行.调试.部署等一系列问题而诞生的产物, 自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可 ...