python学习笔记

本文介绍了Python编程中的几个关键概念和实用技巧,包括使用_future_模块实现版本兼容、input()与raw_input()的区别、引用和复制机制、pyperclip模块的使用、zip()函数的功能以及nonzero()函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • _future_模块
    利用这个模块可以在旧版本中使用一些新版本的特性,如:
10/3
3
from __future__ import division
10/3
3.3333333333333335
  • raw_input()和input()函数的区别
    input()函数输出的内容数据类型和输入有关,输入是int,输出就是int;输入是float,输出就是float;输入时字符串(要加单引号或双引号,如果不加会报错),输出就是字符串。
input()
10
10
input()
10.0
10.0
input()
'string'
'string'
input()
string
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'string' is not defined

raw_input()函数无论输入是int,float或者是字符串(不需要加单引号或双引号)都不会报错,但输出总是字符串

raw_input()
10
'10'
raw_input()
10.0
'10.0'
raw_input()
string
'string'

如果确定要输入的内容是数值型的,就用input();如果是字符型的,用raw_input()比较方便,因为不用加引号。

  • 引用
    在变量必须保存可变数据类型的值时,例如列表和字典,Python就使用引用。对于不可变的数据类型的值,例如字符串和整型,Python变量就保存值本身。

  • copy模块的copy()和deepcopy()
    由于直接将列表赋值给变量,变量包含的是对列表值的引用而不是列表值本身,这时候变量的变动将会影响原来的列表或字典。如果不希望这些变动影响原来的列表或字典,可以用copy模块中的deepcopy()和copy()函数,用来复制列表或字典的可变值,而不只是复制引用。

import copy
#spam是原始对象
spam = ['A', 'B', 'C', 'D', ['E', 'F', 'G']]
spam_2 = spam
spam_copy = copy.copy(spam)
spam_deepcopy = copy.deepcopy(spam)

#修改原始对象
spam.append('I')
spam[4].append('H')

#原始对象变动后的结果
spam
['A', 'B', 'C', 'D', ['E', 'F', 'G', 'H'], 'I']
spam_2
['A', 'B', 'C', 'D', ['E', 'F', 'G', 'H'], 'I']
spam_copy
['A', 'B', 'C', 'D', ['E', 'F', 'G', 'H']]
spam_deepcopy
['A', 'B', 'C', 'D', ['E', 'F', 'G']]
  • pyperclip模块拷贝粘贴字符串
    pyperclip模块有copy()和paste()函数,可以向计算机的剪贴板发送文本,或从它接收文本。将程序的输出发送到剪贴板,使它很容易粘贴到邮件、文字处理程序或其他软件中。
  • zip()函数
    zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表,zip()和zip(*zip())是反过程。
a = [1, 2, 3]
b = [4, 5, 6]
c = [4, 5, 6, 7, 9]
zipped = zip(a,b)
zipped
[(1, 4), (2, 5), (3, 6)]
zip(a, c)
[(1, 4), (2, 5), (3, 6)] #迭代器的元素个数不一致,则返回列表长度与最短的对象相同
zip(*zipped)
[(1, 2, 3), (4, 5, 6)]
  • nonzero()函数:
    np.nonzero函数是numpy中用于得到数组array中非零元素的位置(数组索引)的函数。
a = np.array([[0,0,3], [1, 0, 3]])
a
#array([[0, 0, 3],
#       [1, 0, 3]])
np.nonzero(a)
#(array([0, 1, 1]), array([2, 0, 2]))
#返回一个2维tuple数组,表示非零元素分别在(0,2),(1,0), (1,2)位置上。
#可用压缩函数zip展示索引对
zip(*np.nonzero(a))
#[(0, 2), (1, 0), (1, 2)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值