标签:cti 类方法 error 列表解析 disjoint enumerate remove 不可变 迭代
封装和结构
先将等式右边的封装,再按线性要求给左边,中间再加上*号表示收集剩下的组成一个列表
例如 a, b=1,2
head, *mid, tail =‘abcdef‘(head = ‘a‘ mid = [‘b‘ , ‘c‘ , ‘d‘ , ‘e‘] tail = ‘f‘ 其中head和tail是字符串,mid是列表)
集set的定义
set的元素必须可hash
可变的对象不可hash
元素不可索引,但set可以被迭代,不过迭代的是没有顺序的
add(elem)
增加元素,如果元素存在,则什么都不做
update(*others)
合并其他set和可迭代对象,是就地修改
remove
从set中移除一个元素
当元素存在,会抛出KeyError异常(用discard时,元素不存在时,什么都不做)
pop()》》item
移除并返回任意的元素,空集返回KeyError异常
clear()
****set,dict等结构,内部使用hash值作为key,时间复杂读可以做到O(1),查询时间与数据规模无关
线性结构的查询时间复杂度是O(n),即随着数据规模的增大而增加耗时
可hash的东西
数值型int,float,complex
布尔型True,False
字符串string,bytes
tuple
None
以上都是不可变类型,成为可哈希类型,hashable
并集 union(*others) 运算符 | update(*others)就地修改 运算符 |=
交集 intersection(*others) 运算符 & intersection_update(*others) 就地修改 运算符 &=
差集 difference_update(*others) 运算符 - 获取和多个集合的差集并就地修改 运算符 -=
对称差集 symmetric_differece(other) 运算符^ symmetric_difference_update(other) 运算符^=
集合方面的运算 (1)issubset(other),<= (2)< (3)issuperset(other),>= (4)> (5)isdisjoint(other)#当前集合和另外一个集合没有交集,返回True or Flase
字典:dict》》keys values items
dict和set差不多,无序,key可hash,不过dict多了一个Value值
标准库的datetime
datetime模块
datetime类
类方法
datetime对象
***时间一般来说就是加减法的问题
***time.sleep(secs)将调用线程挂起指定的秒数
列表解析式,生成器,字典解析式(其中生成器只能走一次,并且不能回头,节省空间)
内建函数
枚举 enumerate(seq,start=0) 迭代一个序列,返回索引数字和元素组成的二元组(返回的是一个生成器)
迭代器和取元素 iter(iterable),next(iterator[,default])
拉链函数zip(*iterables)
可以将多个迭代器合并再一起,返回一个迭代器
将每次从不同对象中取到的元素合并成一个元组
nums = [1,2,34,5,7,12,34,5,7,4,2,2]
lengh = len(nums)
for i in range(lengh//2):
maxindex = i
minindex = -i-1
for j in range(i+1,lengh-i):
if nums[j] > nums[maxindex]:
maxindex = j
if nums[-j-1] < nums[minindex]:
minindex = -j-1
if nums[maxindex]==nums[minindex]:
break
if maxindex != i:
nums[i],nums[maxindex] = nums[maxindex],nums[i]
if minindex == i-lengh:
minindex = maxindex
if minindex != -i-1 and nums[minindex] != nums[-i-1]:
nums[-i-1], nums[minindex] = nums[minindex], nums[-i-1]
print(nums)
标签:cti 类方法 error 列表解析 disjoint enumerate remove 不可变 迭代
原文地址:http://blog.51cto.com/13887608/2161261