more pythonic-更python的写法

数学计算函数

  • ord
    ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值。
ord('A')
Out[8]: 65
  • chr
    用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
chr(65)
Out[9]: 'A'

排序

  • sorted。python内置函数,与list.sort()方法不同之处是可对字典进行排序。

运算符

  • ^python中的异或运算符。

字符串

一个字符串本质是一个列表,所以可以遍历一个字符串获得每一个字符。

  • str.rstrip([chars])
    删除字符串末尾的字符,默认是删除空格。
  • str.split(str="", num=string.count(str)).
    通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串.str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等.
  • isspace() 方法检测字符串是否只由空格组成.
  • 字符串判断是否为空串用not s

列表

  • 删除方法 remove,del,pop
    remove是删除列表中对应的数值,pop是根据索引弹出某一元素并在列表中删除,pop()默认删除最后一个元素,pop(1)则是删除索引为1对应的元素,del是直接删除。
a=list(np.arange(1,10,2))
a.remove(3)
a.pop(0)
  • 插入方法append,extend,insert
    append方法是在列表末尾添加新的对象。extend是将一个列表中每个元素分别添加到另一个列表中,注意extend()传入的元素会被当做列表参数对待。insert(index,content)是将元素content插入index索引的列表中位置。
a=[]
a.extend('code')
print(a)
out:['c', 'o', 'd', 'e'] #原因是字符串被当作列表处理,每个字符表示列表中的一个元素。
a=[]
a.insert(0,'code')
a.extend(['keep','fighting'])
print(a)
out:['code', 'keep', 'fighting']
  • 列表逆转reverse
    reverse() 函数用于反向列表中元素。

  • 列表加元素
    list+=[i]的方法会把[i]加入list里现有的元素之后。[‘b’]+list则会把[‘b’]加入list现有元素之前。

list=['a']
for i in range(6):
   list+=[i]
print(list)
['b']+list

输出结果:

[‘a’, 0, 1, 2, 3, 4, 5]
[‘b’, ‘a’, 0, 1, 2, 3, 4, 5]

  • 列表乘元素
  • 列表排序
    list.sort(cmp=None, key=None, reverse=False),cmp – 可选参数, 如果指定了该参数会使用该参数的方法进行排序,key是多个元素时指定排序时用于比较的元素,reverse = True是降序排序。
# 获取列表的第二个元素
def takeSecond(elem):
    return elem[1]
 
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
 
# 指定第二个元素排序
random.sort(key=takeSecond)
 
# 输出类别
print '排序列表:', random

切片

r="adnfiff.shp"
print(r[-4:])  #从最后一个字符向前索引4个
  • split分割字符串后切片
pa='D:\\sheng\\\xc8\xfd\xc3\xc5\xcf\xbf\xca\xd0\\sanmenxia.shp'
print(pa.split('\\')[-1])

split将字符串按`\``切分,-1从最后一个索引,输出结果为

sanmenxia.shp

  • :索引
    a[:pos] 从起始位置索引到pos
    a[pos:] 从pos索引到末尾
  • [start: end : step]
    [:][::]都代表索引全部的内容,[::-1]表示步长为负数,从最后倒序索引全部。

遍历

字符串可以遍历输出单个字符,同理列表中的多个列表元素也可以遍历。

trust=[[1,3],[3,4],[3,7]]
for i,j in trust:
    print(i,j)

有用的函数

zip

  1. zip(a,b)。将两个列表中元素对应压缩为一个元组,最终压缩成一个元组列表。
a=["hello","gakki"]
b=["no","a"]
pre=[]
for i in zip(a,b):
    print(i)
    pre.append(i[0])

输出是:

(‘hello’, ‘no’)
(‘guten’, ‘a’)

  1. zip(*a)。逆压缩方法,将一个列表中每个元素中对应位置的内容压缩成一个元组,最终返回一个元组列表。
a=["hello","gakki","flower"]
b=["no","a"]
pre=[]
for i in zip(*a):
    print(i)
    pre.append(i)
print(pre)
print("".join(pre))

输出是:

(‘h’, ‘g’, ‘f’)
(‘e’, ‘a’, ‘l’)
(‘l’, ‘k’, ‘o’)
(‘l’, ‘k’, ‘w’)
(‘o’, ‘i’, ‘e’)
[‘h’, ‘e’, ‘l’, ‘l’, ‘o’]

enumerate方法

enumerate方法获取数组元素对应的下标。

b=["guten","abend"]
for i,x in enumerate(b):
    print(i,x)

输出结果:

0 guten
1 abend

eval

eval函数用来执行一个字符串表达式,并返回字符串的值。

x,y=2,6
eval("x+y-2")

输出结果是6

print()格式化字符串输出

三种方法总结
print参数设置

sys库

  • sys.stdout的形式就是print的一种默认输出格式,输出方式是行缓冲。输出的字符会先存放在缓冲区,等按下回车键时才进行实际的I/O操作。
import sys
import time
for i in range(6):
    print(i)
    sys.stdout.flush() #每隔一秒输出一个数字
    time.sleep(2)

达到每秒实时输出数字的效果。

  • stderr– 标准错误输出设备 ,无缓冲直接在屏幕输出。
  • subprocess.call
    subprocess模块call的用法,用于创建新进程。

倒序循环

  1. for i in range(len(a)-1,-1,-1)
a=[1,2,4,5,6]
for i in range(len(a)-1,-1,-1):
    print(a[i])
  1. for i in reversed(range(len(digits))),此方法会增加内存存储reversed的内容。
    result.reverse()表示把列表元素倒过来排列。
for i in reversed(range(len(a))):
    print(a[i])
  1. a[~i ] gives i-th element from the back.

字典

  • dict.items()。Python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组。

集合类

collections

collections是python的内建集合模块,提供许多有益的集合模块。

  • Counter
    Counter(计数器)是继承了字典的类,是对字典的补充,用于追踪值的出现次数。Counter.elements()方法可获取字典中所有元素的值。
import collections
o=collections.Counter("assfdveww")
a=o.elements()
for i in a:
    print(i)
print(o)

out: Counter({‘s’: 2, ‘w’: 2, ‘a’: 1, ‘f’: 1, ‘d’: 1, ‘v’: 1, ‘e’: 1})

pythonic 函数

更python的函数写法。

  • map。map(func,iterable)
map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]

迭代器

  • itertools。python内建模块,用于操作迭代对象的函数。https://www.liaoxuefeng.com/wiki/1016959663602400/1017783145987360
    itertools.chain将多个可迭代对象合并成一个可迭代对象,如合并几个列表为一个。
from itertools import chain
 my_list = list(chain(['foo', 'bar'], cmd, numbers))

调试

+assert(断言),用于判断一个表达式,在表达式条件为 false 的时候触发异常。

assert 1==2, '1 不等于 2'#AssertionError提示的内容
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError: 1 不等于 2

方法

python中的方法分为实例方法、静态方法和类方法。
https://www.cnblogs.com/wcwnina/p/8644892.html

静态方法

静态方法是个独立的、单纯的函数,它仅仅托管于某个类的名称空间中,便于使用和维护。静态方法也可以放在某个类的名称空间外,但是这样写会导致逻辑比较混乱。

ElementTree解析xml

https://www.cnblogs.com/hupeng1234/p/7262371.html
https://docs.python.org/3/library/xml.etree.elementtree.html
https://www.cnblogs.com/panfb/p/9575414.html

scipy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值