python

来源:互联网 发布:飞科剃须刀怎么样 知乎 编辑:程序博客网 时间:2024/05/21 17:51

1、时间操作

#时钟差

import datetime

d1 = datetime.datetime.strptime('17:48:30', '%H:%M:%S')
d2 = datetime.datetime.strptime('17:41:20', '%H:%M:%S')

delta = d1 - d2

print delta

输出的是0:07:10


#时间格式转化为分钟

 x=time.strptime('17:48:30','%H:%M')
print x

print x[3]*60+x[4]

输出:

time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=17, tm_min=48, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)

1068(分钟)


#最值和最值的索引min/max与np.argmin/np.argmax

#处理的对象不同 

前者跟适合处理list等可迭代对象,而后者自然是numpy里的核心数据结构ndarray(多维数组)

min(iterable, key=func)->输出值func是制定函数

np.argmin(a, axis=None) 输出索引 axis=0 默认列方向上的最小值

#max函数中的key

>>>l = [(1,2,5), (2,3,5), (3,2,5), (4,4,5), (5,1,5)]

>>>max(l, key=lambda x: x[1])

(4,4,5)

>>>l.index(max(l, key=lambda x: x[1]))

3

这里的func= lamda x:x[1] #返回x[1]


#这里说一下lamda,map,reduce,filter:

list1 = [3,5,-4,-1,0,-2,-6]

list2=sorted(list1, key=lambda x: abs(x))

print list2

输出[0, -1, -2, 3, -4, 5, -6]


add = lambda x, y : x+y

add(1,2)

输出3


l=[1,2,3,-4,-9,0,45]

l2=map(lamda x:abs(s),l)  #l中的所有元素的绝对值

l3=filter(lamda x:x<0,l)#l中小于0的元素列表

l4=reduce(lamda x,y:x+y,l)l中所有元素的和

lamda只是个函数,都可以换成函数形式


#判断某个列表中元素是否存在于另一个列表

l2=[2,3,3,4]
l1=[2,3]
print set(l1).issubset(set(l2))

输出 true



#字符串删除开头或结尾字符 s.strip(rm)

声明:s为字符串,rm为要删除的字符序列
 
s.strip(rm)        删除s字符串中开头、结尾处,位于 rm删除序列的字符
 
s.lstrip(rm)       删除s字符串中开头处,位于 rm删除序列的字符
 
s.rstrip(rm)      删除s字符串中结尾处,位于 rm删除序列的字符

1. 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ')

>>> a = '     123'
>>> a.strip()
'123'
>>> a='\t\tabc'
'abc'
>>> a = 'sdff\r\n'
>>> a.strip()
'sdff'

2.这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉。

>>> a = '123abc'
>>> a.strip('21')

'3abc'
>>> a.strip('12')
'3abc'

>>> a.strip('12b')

'3abc'   

结果是一样的


#列表相加

l1.extend(l2)

或者

l3=l1+l2

列表长度

len(l)

没有l.lenth()这个函数

反转列表

l.reverse()

删除item,三种方式:del、remove、pop,后两种方式都是列表的方法。
a_list = ['a','b','c','hello']:
del删除。它按item的索引值或切片进行删除:
del a_list[0]   //删除列表的第一个值
del a_list[:2]   //删除列表的前两个值。(为什么不是前三个呢?因为python的列表切片,包含前一个索引,但不包括后一个索引)
remove方法删除。它不按item索引,而是按照item的值进行删除:
a_list.remove('a')  //把a从列表中删除
pop方法删除。它按item索引值进行删除,同时返回被删除的item值;若不指定索引,默认删除最后一个item:
a_list.pop(1)  //删除列表的第二个值,并返回被删除的值
a_list.pop()   //删除列表的最后一个值,并返回被删除的值


#随机产生不重复数字

random.sample(range(1,9),8)

生成8个1-9(不包括9)的不重复数字


#for循环和if嵌套使用 简洁一条语句实现

>>>a=[12,3,4,6,7,13,21]  
>>>b=['a','b','x']  
>>>newList=[(x, y) forx ina fory inb]  
>>>newList  
[(12,'a'), (12,'b'), (12,'x'), (3,'a'), (3,'b'), (3,'x'), (4,'a'), (4,'b'), (4,'x'), (6,'a'), (6,'b'), (6,'x'), (7,'a'), (7,'b'), (7,'x'), (13,'a'), (13,'b'), (13,'x'), (21,'a'), (21,'b'), (21,'x')]  
>>>newList2=[(x, y) for x in a for y in b if x%2==0 and y<'x']  
>>>newList2  
[(12,'a'), (12,'b'), (4,'a'), (4,'b'), (6,'a'), (6,'b')]