第9次全天课笔记-20180909

练习题1:

"abcdefgh"里面挑出3个字母进行组合,一共有多少种组合,要求三个字母中不能有任何重复的字母,三个字母的同时出现次数,在所有组合中只能出现一次,例如出现abc了,不能出现cab和bca等。

result  = []
for i in "abcdefgh":
    for j in "abcdefgh":
        for m in "abcdefgh":
            s = i+j+m
            if s.count(i) >1 or s.count(j)>1 or s.count(m)>1:
                continue
            if sorted(list(s)) not in list(map(lambda x:sorted(list(x)),result)):  #或者使用 if "".join(sorted(list(s))) not in result:
                result.append(s)

print (len(result))

 

 

练习题2:

复制一个列表,不能使用切片和复制的函数进行赋值,尽可能使用少的内置函数

 

a = [1,2,3,4,5]
arr_length = 0
for i in a:
    arr_length+=1

def iter_arr(n):
    arr = []
    i = 0
    while i<=n-1:
        arr+=[i]
        i+=1
    return arr 

result = [""]*arr_length
for i in iter_arr(arr_length):
    result[i] = a[i]

print(result)

 

迭代器

#encoding=utf-8
li=[5,6,7]
it=iter(li)
print (it)
print (it.__next__())  #或者 print(next(it))
print (it.__next__())
print (it.__next__())
print (it.__next__())

 

列表,元组,字典 都可以使用 iter()

 

>>> a= iter({1:2,3:4})
>>> type(a)
<class 'dict_keyiterator'>
>>> a= iter({1:2,3:4}.values())  对values做迭代
>>> type(a)
<class 'dict_valueiterator'>

 

迭代器有什么用,对于大数据,使用迭代器进行取值。分而治之。

 

生成器   (一般循环一半计算,节省空间)

方法1: 推导列表,[] 变成()

g = (x * x for x in range(10))

print (g)

 

print (next(g))

print (next(g))

print (next(g))

print (next(g))

 

方法2

def odd():
    print ('step 1')
    yield 1
    print ('step 2')
    yield 3
    print ('step 3')
    yield 5
o = odd()
print (next(o))
print (next(o))
print (next(o))
print (next(o))

#for i in o:
#    print i  

 

 

迭代器和生成器的区别

 

枚举

>>> for i,value in enumerate(["A","B","C"]):

...     print(i,value)

 

 

深浅拷贝

#encoding=utf-8
from collections import deque

queue = deque(["Eric", "John", "Michael"])
queue.append("Terry")           # Terry arrives
queue.append("Graham")          # Graham arrives
print (queue.popleft())                # The first to arrive now leaves
print (queue.popleft())                # The second to arrive now leaves
print (queue)  

 

 

堆栈:

后进先出  list append()  pop()

 

队列:

先进先出  list append()  pop(0)/remove(x[0])

 

列表的操作:

增 list.append()  list.extend(seq) list.insert(i,obj)

删 pop()  remove(list[i])  del list[i]

改 list[i]=y

查 list[i] , list[i:j] ,  list.index(obj)

其他   len(list)  list.count(i), list.reverse(),list.sort(key=?,reverse=True),sorted(list)

 

>>> a=[[1,2],[-1,-2]]

>>> a.sort(key=lambda x:x[0])

>>> a

[[-1, -2], [1, 2]]

 

代码大全2

 

自我介绍:

1 看你的口才

2 看看你的简历有没有造假

3 自我表述亮点的机会:

你要从他的角度说一些,他关注的东西。招聘的岗位需求。

 

质量结果

bug预防体系:

功能测试框架

探索式测试

 

编程:写过3万行。我有博客。。。。。100篇

每月读一本技术的书--》代码大全2 

 

用作品说话

测试框架:

数据驱动

关键字驱动

混合驱动

行为驱动

分布式

多并发

UI

 

接口

网站

 

加一个github地址:

2万行。

 

字典:

d.clear() # 清空词典所有条目

del d # 删除词典

 

小练习:
d={-1:100,-2:200,0:300,-3:200}
按照key的大小顺序升序进行输出,输出key=value
-3=200,-2=200,-1=100,0=300

 

d={-1:100,-2:200,0:300,-3:200}

for key in sorted(d.keys()):

print ("%s = %s ," %(key,d[key]),end=" ")

 

//自己写的方法

d={-1:100,-2:200,0:300,-3:200}

s = []

for i in sorted(d.keys()):

    s.append(str(i)+"="+str(d[i]))

    result = ",".join(s)

print(result)

 

>>> d.items()[1]

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: 'dict_items' object does not support indexing

 

一个字符串排序,排序规则:小写<大写<奇数<偶数,

# 原理:先比较元组的第一个值,FALSE<TRUE,如果相等就比较元组的下一个值,以此类推。

 

s='9a13C85c7B24A6b' #确的顺序应该为:abcABC135792468
s="".join(sorted(list(s)))
lis=sorted(s,key=lambda x:(x.isdigit(),x.isdigit() and int(x)%2==0,x.isalpha() and x.isupper(),x.isalpha() and x.islower()))
print(''.join(lis))

 

字典内置的常用函数

读取字典的key,又不想处理异常,可以按照如下方式处理:

d={"1":"a","2":"b","3":"c"}

print (d.get("1","key not found"))

print (d.get("4",'key not found'))

 

若字典中的key不存在,则生成key,并使用默认值赋值

d={"1":"a","2":"b","3":"c"}

d.setdefault("1","xx")

d.setdefault("4","d")

print (d)

 

创建字典

使用命名参数创建字典:

data=dict(red=1,blue=2,green=3)

print (data)

data=dict(zip(['one', 'two', 'three'], [1, 2, 3]))

print(data)

data=dict([('one', 1), ('two', 2), ('three', 3)])

print (data)

 

使用fromkeys来创建字典

seq = ('name', 'age', 'sex')

dict = dict.fromkeys(seq)

print ("New Dictionary : %s" % str(dict))

dict = dict.fromkeys(seq, 10)

print ("New Dictionary : %s" % str(dict))

 

生成小写字母的字典,值是ascii码

d={}

for i in range(97,123):

    d[chr(i)]=i

print(d)

 

>>> import string

>>> {s:ord(s) for s in string.ascii_lowercase}

 

切片:

越界问题,切片可以越界

 

l[start:end:span]

遍历 [start,end),间隔为 span,当 span>0 时顺序遍历, 当 span<0 时,逆着遍历。

start 不输入则默认为 0,end 不输入默认为长度。

 

>>> a[11]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> a[11:]
[]

 

>>> a = list(range(9))

>>> a

[0, 1, 2, 3, 4, 5, 6, 7, 8]

>>> a[::-1]

[8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> a[-1::-1]

[8, 7, 6, 5, 4, 3, 2, 1, 0]

 

【字符串】

>>> s = "abc"
>>> type(s)
<class 'str'>
>>> s = "abc".encode("utf-8")
>>> type(s)
<class 'bytes'>

>>> s="中"
>>> s
'中'
>>> ord(s)   
20013

>>> chr(20013)

'中'

 

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'

 

字符串是不可变类型

>>> s1="a"
>>> id(s1)
34344888
>>> s1+="b"
>>> id(s1)
38588912

 

将”abc”变为 “a1c”

 

方法1:

>>> s

'abc'

>>> list(s)

['a', 'b', 'c']

>>> letter_list = list(s)

>>> letter_list[1]="1"

>>> "".join(letter_list)

'a1c'

方法2:

>>> s.replace("b","1")

'a1c'

方法3:

>>> s[0]+"1"+s[-1]

'a1c'

方法4:

>>> "1".join(s.split("b"))

'a1c'

方法5:

print(re.sub(r'b','1',s))

 

判断开头和结尾

>>> s

'abc'

>>> s.startswith("a")

True

>>> s.startswith("ab")

True

>>> s.endswith("bc")

True

 

.strip()  去空白

>>> "   \t\nabc         ".strip()

'abc'

>>> "   \t\nabc         ".lstrip()

'abc   '

>>> "   \t\nabc         ".rstrip()

'   \t\nabc'

 

>>> "a".upper()
'A'
>>> "aB".lower()
'ab'

 

>>> "aB".swapcase()
'Ab'

左对齐

>>> "abc".ljust(10)

'abc       '

>>> "abc".rjust(10)

'       abc'

>>> "abc".center(10)

'   abc    '

 

>>> "abc".ljust(10,"*")
'abc*******'
>>> "abc".rjust(10,"*")
'*******abc'
>>> "abc".center(10,"*")
'***abc****'

>>> "abacaaaddaa".find("a")

0

>>> "abacaaaddaa".find("axx")

-1

 

>>> "abacaaaddaa".rfind("daa")

8

>>> "abacaaaddaa".count("a")
7

>>> "abacaaaddaa".index("axx")    #index如果没有找到,会报错

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: substring not found

 

>>> "abc def".capitalize()
'Abc def'

>>> "abc def".title()

'Abc Def'

>>> import string

>>> string.capwords("abc def")

'Abc Def'

 

>>> string.punctuation

'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

 

小练习:

删除一句英文中的所有英文标点。

>>> "abc".zfill(10)
'0000000abc'

>>> "dabd".rindex("d")
3

 

posted @ 2018-09-12 15:35  feifei_tian  阅读(112)  评论(0编辑  收藏  举报