赞
踩
print(sum(range(1, 101)))
os,sys,re,math,datetime
list1 = [1, 2, 1, 2]
print(list(set(list1)))
6种:数字,字符串,列表,元祖,字典,集合
可变类型:列表,字典,集合
不可变类型:数字,字符串,元祖
# 关闭文件 f.close()
my_list = [1, 2, 3, 4, 5]
print([i for i in map(lambda x: x*x ,my_list) if i > 10])
# 注意map,Python2返回的是列表,python3返回的是迭代器对象
# map函数参数一:匿名函数 参数二:可迭代对象
import random
# 1:生成随机整数[0,10]
print(random.randint(0, 10))
# 2:生成随机小数[0,1]
print(random.uniform(0, 1))
s ='ajldjlajfdljfddd'
my_set = set([i for i in s]) # 去重
my_list = sorted(list(my_set)) # 排序
print(''.join(my_list)) # 拼接
lambda x, y : x * y
my_dict = {'1': 'aaa', '4': 'bbb', '0': 'ccc'}
print(dict(sorted(my_dict.items(), key=lambda x: x[0])))
# 方案一:归并算法: i = 0 j = 0 list_1 = [1, 5, 7, 9] list_2 = [2, 2, 6, 8] list_3 = [] length1 = len(list_1) length2 = len(list_2) while True: if i >= length1: list_3.extend(list_2[j:]) break elif j >= length2: list_3.extend(list_1[i:]) break elif list_1[i] >= list_2[j]: list_3.append(list_2[j]) j = j + 1 else: list_3.append(list_1[i]) i = i + 1 print(list_3) # 方案二:投机取巧,合并再排序: list_1 = [1, 5, 7, 9] list_2 = [2, 2, 6, 8] list_1.extend(list_2) print(sorted(list_1))
# 方案一:冒泡排序,等其他排序算法
list1 = [2, 3, 5, 4, 9, 6]
for i in range(len(list1)-1):
for j in range(len(list1)-i-1):
if list1[j] > list1[j+1]:
list1[j], list1[j+1] = list1[j+1], list1[j]
print(list1)
# 方案二:使用sorted:
list1 = [2, 3, 5, 4, 9, 6]
print(sorted(list1))
# 引用计数,垃圾回收,内存池。
注意:range函数,第一个表示起始下标,第二个表示不会有的末尾下标,第三个是步幅。
print(list(range(10)))
print(list(range(1, 10)))
print(list(range(0, 9, 2)))
print(list(range(10, 1, -1)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
# [0, 2, 4, 6, 8]
# [10, 9, 8, 7, 6, 5, 4, 3, 2]
多线程使用threading模块
多进程使用multiprocessing模块
区别:
1:线程是CPU调度的基本单位,进程是资源分配的基本单位。
2:多线程共享全局变量,进程与进程之间自己有自己的全局变量。
1: import xxx导入的是一个模块,并将整个模块执行一遍,但是 if __main__ == "__main__"里面的没有执行。
2: import,当需要导入XXX中的函数、变量、类,等需要使用 XXX.YYY的方式导入。
3: from XXX import YYY 是将函数名,变量名,类都导入到当前的命名空间中,因此可以之间使用YYY。
sys.argv # 获取命令行参数列表
1: 使用 % 和 format格式化字符串:用数字变量num统计数量,用字符串变量style统计类型,打印"There is $sum $style birds"
print("There is ${} ${} birds".format('1', 'style'))
print("There is $%d $%s birds" %(1, 'style'))
2:
pi = 3.1415926
m = 100
n = 100000
print("%.2f..%+6d..%-6d..%06d" % (pi, m, m, m))
# 3.14.. +100..100 ..000100
print("{0:>6.3f}..{1:*<+6}..{2:,d}".format(pi, m, n))
# 3.142..+100**..100,000
my_dict = {'name': 'renshanwen', 'age': 18}
print('name' in my_dict.keys())
# 注意python2的时候可以使用hasin(),但是python3就没有了。
1:携带yield关键字的函数是个生成器。
2:yield关键字是暂停返回,当使用next再次调用生成器时,可以在yiled关键字之后继续执行。
/ 除法 : 得到一个小数
//整除 : 向下取整。
math.floor 是返回 小于或者等于当前值的`最大整数` 例如:3.2 得到3 ,-3.2 得到 -4
math.trunc 是截断后面的部分 3.2 得到 3 ,-3.2 得到 -3
两者的区别在于处理负数上。
# 1: 查看函数的帮助信息:
dir(模块名)
# 2:查看方法的使用说明
help(方法名)
lista = '123456789'
print(lista[-2:1:-1])
1:time,json,pickle,random
2:os,sys
3:threading
4:Django
5:Flask
6:math
def my_func(m):
return m if m == 1 else m * my_func(m-1)
print(my_func(5))
# 反弹 50 25 12.5
# 经过距离: 100 100+50*2 100+50*2+25*2
tan = 100
distance = 100
for i in range(1, 11):
tan = tan / 2
if i == 10:
break
distance += tan * 2
print("第10次落地经过{}米,第十次反弹{}高".format(distance, tan))
# 第10次落地经过299.609375米,第十次反弹0.09765625高
my_str = 'aAC666 & / 1 345' count_num = 0 count_mul = 0 count_str = 0 count_nnn = 0 for i in my_str: if (i >= 'a' and i <='z') or (i >= 'A' and i <= 'Z'): count_str += 1 elif i >= '0' and i <= '9': count_num += 1 elif i == ' ': count_nnn += 1 else: count_mul += 1 print("字母的数量:{}".format(count_str)) print("数字的数量:{}".format(count_num)) print("空格的数量:{}".format(count_nnn)) print("其他的数量:{}".format(count_mul))
# 导入日历模块 import calendar year = int(input('请输入年份:')) month = int(input("请输入月份: ")) day = int(input('请输入日:')) sum_day = 0 # 这一年的第几天 if calendar.isleap(year): days = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] else: days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] for i in range(1, 13): if i == month: sum_day = sum_day + day break else: sum_day = sum_day + days[i] print(sum_day)
list1 = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
]
def trans_list(m):
list_zip = zip(*m)
list1 = [list(i) for i in list_zip]
return list1
print(trans_list(list1))
案例:3 * 6 -2 * 5 得到结果:8
class Single_Class(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, '_instance'):
cls._instance = super(Single_Class, cls).__new__(cls, *args, **kwargs)
return cls._instance
# 生成一个生成器对象
def feibonaqie(max_num):
a, b = 0, 1
flag = 0
while flag < max_num:
yield a
a, b = b, a+b
flag += 1
obj = feibonaqie(100)
print([o for o in obj])
str = 'abcdefg'
print(str[::-1])
在包中增加 __init__.py文件,然后在文件中增加:
__all__ = ['mod1', 'mod2']
def strtest1(num):
str = 'first'
for i in range(num):
str += 'X'
return str
# 隐患1:python2中range是直接生成一个列表,如果num足够大,则列表会占用大量的内存空间。
# 隐患2: str是不可迭代对象,如果num太大,将创建很多str对象,也会占用大量的内存空间。
class A():
def show(self):
print("base show")
class B(A):
def show(self):
print("derived show")
obj = B()
obj.show()
# 答案:
obj.__class__ = A
考察点:__call__
方法的用途:对象能够直接被调用。
class A():
def __init__(self, a, b):
self.__a = a
self.__b = b
def myprint(self):
print('a =', self.__a, 'b =', self.__b)
a1 = A(10, 20)
a1.myprint()
a1(80) # 问题出在这里,对象可以直接被调用?
# 答案:需要实现__all__方法:
def __call__(self, num):
print('call:', num + self.__a)
考察点:__init__
方法和__new__
方法的作用:
class B(): def fn(self): print('B fn') def __init__(self): print('B INIT') class A(): def fn(self): print('A fn') def __new__(cls, a): print("NEW", a) if a > 10: return super(A, cls).__new__(cls) return B() def __init__(self, a): print("INIT", a) a1 = A(5) a1.fn() a2 = A(20) a2.fn() # 输出结果: NEW 5 B INIT B fn NEW 20 INIT 20 A fn
考点:局部变量和全局变量:
num = 9
def f1():
num = 20
def f2():
print(num)
f2()
f1() # 这里没有打印,并且num只作用于f1这个函数。
f2()
# 输出
9
9
考点:__getattr__
的用法:异常属性的时候被调用。
class A(): def __init__(self, a, b): self.a1 = a self.b1 = b print('init') def mydefault(self): print('default') a1 = A(10, 20) a1.fn1() a1.fn2() a1.fn3() # 答案: def __getattr__(self, item): return self.mydefault # 解释:我的a1对象,并没有fn1和fn2这些属性,此时可以使用 __getattr__,这个是当对象没有这个属性的时候会调用它。
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6, 7]
print("交集是:", list(set(list1) & set(list2))) # 两个共有的
print("并集是:", list(set(list1) | set(list2))) # 两个都有的
print("差集是:", list(set(list1) ^ set(list2))) # 全部的去除共有的
def check(fn):
def inner():
print("请先登录")
fn()
return inner
def comment():
print("发表评论")
comment = check(comment)
comment()
def funcA(num): if len(num) == 0: return 0 for i in range(len(num)): num[i] = float(num[i]) # 转变成float类型 return max(num) # def funcB(num): if len(num) == 0: return 0 for i in range(len(num)): num[i] = float(num[i]) return sum(num) / len(num) # 拿到的是整形 x = [4, 4, 6, 8, 2, 12] print(funcA(x)) # 12.0 print(funcB(x)) # 6.0
my_dict = {'name': 'renshanwen', 'age': 20}
del my_dict['name'] # 删除字典的key
print(my_dict) #{'age': 20}
# 方案一:
my_dict = {'name': 'renshanwen', 'age': 20}
my_dict2 = {'name': 'shanwen', 'age':30, 'sex': '男'}
my_dict2.update(my_dict) # 使用update方法,但是后者会覆盖前者
print(my_dict2) # {'name': 'shanwen', 'age': 20, 'sex': '男'}
# 方案二:
my_dict = {'name': 'renshanwen', 'age': 20}
my_dict2 = {'name': 'shanwen', 'age':30, 'sex': '男'}
my_dict3 = {**my_dict, **my_dict2} # 利用拆包,后者覆盖前者
print(my_dict3) # {'name': 'shanwen', 'age': 30, 'sex': '男'}
# 使用绝对导包:两个都是这样引用。
from subpackage1.module_y import hello_word
例如:[0, 0, 1, 3, 4] ,输出2
my_list = [0, 0, 2, 4, 5]
flag_num = my_list.pop()
while my_list:
flag_num2 = my_list.pop()
if flag_num2 != flag_num and flag_num2 != (flag_num -1):
print(flag_num - 1)
break
else:
flag_num = flag_num2
def stack_list(my_str): length = len(my_str) if length % 2 != 0: return False my_stack = [] for i in my_str: if i == '(' or i == '{': my_stack.append(i) elif i == ')' and len(my_stack) != 0: flag = my_stack.pop() if flag != '(': return False elif i == '}' and len(my_stack) != 0: flag = my_stack.pop() if flag != '{': return False if len(my_stack) != 0: return False else: return True
url = "http://www.qq.com" def func(): print(url) url = url.split(".")[1] print(url) if __name__ == "__main__": func() # url在局部没有定义,如果在局部修改全局变量,需要使用global指定。 url = "http://www.qq.com" def func(): global url print(url) url = url.split(".")[1] print(url) if __name__ == "__main__": func() print(url)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。