python实用技巧(一)

Python实用技巧(一)
python实用技巧(二)
python实用技巧(三)
python实用技巧(四)

已知X是多维数组类型,则:

  • X[:, v],表示的是truncate X中的一些列(对应于v==1),v是布尔向量,长度与X的列数相等

  • X[v, :],表示的是truncate X中的一些行,v是布尔向量,长度与X的行数相等

查询python的版本

在操作系统(Windows或者Linux)命令行界面下:

> python -V
Python 3.4.3 :: Anaconda 2.3.0 (32-bit)

如果我们已经进行python命令环境下呢:

>>> import sys
>>> sys.version
'3.4.3 |Anaconda 2.3.0 (32-bit)| (default, Mar  6 2015, 12:08:17) [MSC v.1600 32
 bit (Intel)]'
>>> sys.version[:5]
'3.4.3'

查询包的版本

>>> import library_name
>>> library_name.__version__
'*.*.*'
            # 如果我们使用dir(),返回其属性和方法以list of strings的形式
            # 我们会看到该对象内部会维护__version__

requirements.txt文件的使用

requirements.txt文件一般用来保存第三方的库名及其对应的版本信息,如:

numpy==1.9.2
Theano==0.7.0

将所有需要安装的库以文件的形式统一进行安装,避免了手动的一个库一个库的安装。
切换到该.txt文件所在的文件夹下:

pip install -r requirements.txt

list comprehension

使用list comprehension(最外层为[ ])的目的是使用简洁的方式创建一个list(也即list comprehension返回一个list),而list是一个可迭代对象(iterables):

在list comprehension中增加判断逻辑(也即filter):

[exp for x in seq if COND]

注意:不是[exp for x in seq and COND],也不是[exp if COND for x in seq]。

>>> [i**2 for i in range(10) if i%2 == 0]
[0, 4, 16, 36, 64]
>>> type([i**2 for i n range(10) if i%2 == 0])
list
>>> for i in [i**2 for i in range(10) if i%2==0]:
        print(i)
0
4
16
36
64

( )包裹的是生成器类型(generator),也是一种可迭代类型(iterables)

>>> type((i**2 for i in range(10) if i%2==0))
generator
>>> for i in (i**2 for i in range(10) if i%2==0):
        print(i)
0
4
16
36
64

格式化输出自然是format

>>> print(1/6)
0.16666666666666666                     # 默认
>>> print('{0}'.format(1/6))
0.16666666666666666                     # 默认
>>> print('{0:.2f}'.format(1/6))
0.17
>>> print('{0:.0f}'.format(1/6))
0                                       # 本身含有四舍五入的操作

不可以{:d}的形式输出一个float:

>>> print('{0:d}'.format(10.0))
ValueError: Unknown format code 'd' for object of type 'float'

>>> print('{0:.0f}'.format(10.0))
10

api含义

np.random.randn()   ~   N(0, 1),    标准高斯分布
np.random.rand()    ~   U(0, 1),     [0, 1]区间上的均匀分布

ipython:查看日期

>>> !date
当前日期: 2015/12/19 周六
输入新日期: (年月日)

enumerate与zip组合

enumerate(zip(, ))

生成的每一个可迭代的对象是一个二元元组,元组第一位是其序号,第二位是zip打包返回的内容;

for i, (param, true, est) in enumerate(zip('ABCD', [A, B, C, D], plesq[0])):
    plt.text(10, 3-i*.5, ''.format())

采样

# data是一维数组
n = len(data)       
idx = np.random.randin(0, n, size=(nsamples, n))
samples = data[idx]
                    # samples的shape也变为(nsamples, n)

生成字符型000000-999999

for i in range(1000000):
    passwd = str(i)
    if len(passwd) < 6:
        passwd = (6-len(passwd))*'0'+passwd
    print(passwd)

listA + listB(表示concatenate)

两个list之间进行相加的意义何在:

>>> [1, 2]+[3, 4]
[1, 2, 3, 4]            # 实现一种拼接,相当于extend
                        # 只有加法(也即拼接)运算。
                        # 没有乘除,也没有减法
>>> [1, 2] + 3
TypeError: can only concatenate list (not "int") to list

错误提示很清楚:

can only concatenate list (not "int") to list

只允许listlist进行concatenate,而不可将listint进行concatenate

在LeNet5的源程序中:

params = layer3.params + layer2.params + layer1.params + layer0.params
                        # 其中每一层的params都是list类型
                        # 最终的params是全部组成的list

chr()与ord()

>>> chr(65)
'A'
>>> ord('A')
65
>>> chr(ord('A')+1)
'B'

分数的表示以及分数的约分

>>> from fractions import Fraction
>>> Fraction(1, 2)
Fraction(1, 2)
>>> Fraction(2, 4)
Fraction(1, 2)
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python有很多实用的技巧,以下是其中几个: 1. 三元运算符:三元运算符是一种简洁的条件语句,可以在一行代码中实现类似于if-else语句的功能。它的语法是 condition_if_true if condition else condition_if_false。这可以大大减少代码的冗余,并增加可读性。 2. 列表推导式:列表推导式是Python中一种快速创建列表的方法。它使用一种简洁的语法,在一个表达式中生成一个新的列表。例如,你可以使用列表推导式快速生成一个包含一系列数字的列表,而不需要使用循环语句。 3. 上下文管理器:上下文管理器是一种在代码块执行之前和之后执行特定代码的方法。它可以用于处理资源的分配和释放,如打开和关闭文件或数据库连接。使用with语句,可以确保资源在使用完毕后被正确释放,避免资源泄漏。 4. Lambda函数:Lambda函数是一种匿名函数,它可以在一行代码中定义简单的函数。它非常适合于需要临时定义函数的情况,可以作为参数传递给其他函数。Lambda函数可以提高代码的可读性并减少代码的数量。 5. 错误处理与异常处理:Python提供了异常处理机制,可以捕捉和处理程序中可能出现的错误。通过使用try-except语句,可以捕获异常并执行特定的代码来处理异常情况,以避免程序崩溃。这对于保证程序的稳定性和可靠性非常重要。 这些实用技巧可以帮助开发人员更高效地编写Python代码,提高代码的可读性和可维护性。通过学习和应用这些技巧,你可以节省时间和精力,并使你的代码更加优雅和高效。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [16个好用到爆的Python实用技巧!](https://blog.csdn.net/ekcchina/article/details/131041778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [30个Python常用技巧,10分钟get让你的python技术更上一层楼!](https://blog.csdn.net/Python_2332/article/details/130779200)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值