最近重新看了网上的python教程,补充学习了一些之前用的较少的用法
字典
注意字典中 key 是乱序的,也就是说和插入 的顺序是不一致的。如果想要使用顺序一致的字典,请使用 collections 模块 中的 OrderedDict 对象
迭代器
Python 中的 for 句法实际上实现了设计模式中的迭代器模式 ,所以我们自己也可以按照迭代器的要求自己生成迭代器对象,以便在 for 语句中使用。 只要类中实现了 __iter__ 和 next 函数,那么对象就可以在 for 语句中使用。 现在创建 Fibonacci 迭代器对象
# define a Fib class
class Fib(object):
def __init__(self, max):
self.max = max
self.n, self.a, self.b = 0, 0, 1
def __iter__(self):
return self
def __next__(self):
if self.n < self.max:
r = self.b
self.a, self.b = self.b, self.a + self.b
self.n = self.n + 1
return r
raise StopIteration()
# using Fib object
for i in Fib(5):
print(i)
生成器
除了使用迭代器以外,Python 使用 yield 关键字也能实现类似迭代的效果,yield 语句每次 执行时,立即返回结果给上层调用者,而当前的状态仍然保留,以便迭代器下一次循环调用。这样做的 好处是在于节约硬件资源,在需要的时候才会执行,并且每次只执行一次
def fib(max):
a, b = 0, 1
while max:
r = b
a, b = b, a+b
max -= 1
yield r
# using generator
for i in fib(5):
print(i)
对字符串的判断
str为字符串
- str.isalnum() 所有字符都是数字或者字母
- str.isalpha() 所有字符都是字母
- str.isdigit() 所有字符都是数字
- str.islower() 所有字符都是小写
- str.isupper() 所有字符都是大写
- str.istitle() 所有单词都是首字母大写
关于python的指针
python没有指针,但它也可以传引用
浅拷贝和深拷贝
浅拷贝时,python只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已
深拷贝时,deepcopy对外围和内部元素都进行了拷贝对象本身,而不是对象的引用
import copy
a = [1,2,3]
print(id(a))
b = [1,2,3] # or b = a
print(id(b))
c = copy.copy(a)
print(id(c))
d = copy.deepcopy(a)
print(id(d))
其他代码如下
#平方运算
a = 3**2
print(a)
#range的间隔跳跃以及不换行输出(自定义结尾)
for i in range(0,10,2):
print(i,end=' ')
a = input("\ngive me an interger: ")
# 判断输入 通过elif来多重判断
if (a.isdigit()):
a = int(a)
if (a > 0):
print(">0")
elif (a < 0):
print("<0")
else:
print("0")
else:
print("no number!")
# 在函数里面使用全局变量
A = 10
def change():
global A
A = A-1
change()
print(A)
# 读写文件
my_file = open('my_file.txt','w') #默认使用相对路径,w会覆盖之前的所有数据
text = "I am here"
my_file.write(text)
my_file.close()
my_file = open('my_file.txt','a') # a -> append
my_file.write("\nthis is my second line")
my_file.close()
my_file = open('my_file.txt','r') #r->read
content = my_file.read()
print(content)
# 逐行读取
for line in my_file.readlines():
print(line,end='')
# tuple list 之间的转换
alist = [1,2,3,4,99]
atuple = ()
atuple = tuple(alist)
print(atuple)
alist2 = []
alist2 = list(atuple)
print(alist2)
# 以下的remove和pop是等价的
alist.remove(99)
# alist.pop(4)
print(alist)
alist.sort(reverse=True)
print(alist)
import time
print("time now is "+str(time.localtime().tm_hour)+":"+str(time.localtime().tm_min)) #这样就可以print 当地时间了
try:
file=open('eeee.txt','r+')
except Exception as e:
print(e)
response = input('do you want to create a new file:')
if response=='y':
file=open('eeee.txt','w')
else:
pass
else:
file.write('ssss')
file.close()
a=[1,2,3]
b=[4,5,6]
ab=zip(a,b)
print(list(ab)) #需要加list来可视化这个功能
for i,j in zip(a,b):
print(i/2,j*2)
fun= lambda x,y:x+y
x=int(input('x=')) #这里要定义int整数,否则会默认为字符串
y=int(input('y='))
print(fun(x,y))