Python基础(二)

  • 输入一个字符串,以列表输出大写,如果包含整数,转为整型
str = input()
list = []
for i in str:
    if i.isdecimal() == True:
        list.append(int(i))
    else:
        list.append(i.upper())
  • 判断字符的类型:字母,数字,空格
    char.isalpha()
    char.isdigit()
    char.isspace()
  • 两个矩阵相加
m = [[1,2,3],[4,5,6],[7,8,9]]
n = [[1,2,3],[4,5,6],[7,8,9]]
num = [m[i][j] + n[i][j] for i in range(3) for j in range(3)]
  • 列表推导式
list = []
for i in range(3,10):
    if i % 2 == 0:
    list.append(i)

可简写成:
list = [i for i in range(3,10) if i % 2 == 0]

  • 嵌套列表推导
m = [[1,2,3],
        [4,5,6],
        [7,8,9]]
list = []
for i in m:
    for j in i:
        list.append(j)

可简写成:
list = [j for i in m for j in i]

  • 打印菱形
for i in range(1,8,2):
    print(('*'*i).center(7))
for i in range(5,0,-2):
    print(('*'*i).center(7))
  • 判断回文数:当成str比较是否相同就行了,用数字麻烦
    也可以使用切片,比较其与反切是否相等(num == num[::-1])
  • 四个数字1,2,3,4组成的多少互不相同且无重复的数字
for x in range(1,5):
    for y in range(1,5):
        for z in range(1,5):
            if x != y and x != z and y != z:
                print(x * 100 + y * 10 + z)

用列表推导式:
num = [x*100+y*10+z for for x in range(1,5) for y in range(1,5) for z in range(1,5) if x != y and x != z and y != z]

  • 字典推导式
names = ['tom','jerry','jack']
name = {k:v for k,v in enumerate(names)}
print(name)

输出为:{0:'tom',1:'jerry',2:'jack'}

  • 冒泡排序:将2,6,4,9,3,10从大到小排列
list = [2,6,4,9,3,10]
for i in range(len(list)-1):
    for j in range(len(list)-1-i):
        if list[j] < list[j+1]:
            list[j],list[j+1] = list[j+1],list[j]
print(list)
  • 函数的定义
def function_name([参数](形参)):
    #函数说明
    要封装的代码块
function_name([参数(实参)]) #调用函数
  • 可以将函数名赋值给另一个变量,相当于起个别名
  • 函数的参数要一一对应,或者用关键字参数
def f(x,y):
    print(x-y)
f(2,1)
f(y=1,x=2)
  • 不定长参数
def getInfo(name,address,*args,**args2):
    #*args 是接受所有未命名的参数(关键字)
    #**args2 是接受所有命名的参数(带关键字的)
    print('我叫%s,来自%s'%(name,address))
    print(args) #元组类型
    print(args2) #字典类型
getInfo('tom','china','a','b','c',age = 18)

输出:
我叫tom,来自china
('a','b','c')
{'age' : 18}

  • 可变参数与不可变参数
def fun(*args):
    args = hello
    print(args)
str = 'baby'
fun(str1) #输出hello
print(str1) #输出baby,因为string是不可变类型,若为可变类型(如list),则参数也会被修改
  • return之后的代码不会执行,例如
def sum(x,y):
    return x+y #将结果回到调用的位置上
    print(x+y) #不会执行
print(sum(1,2))
  • yield生成器,生成一个迭代器
def getNum(n):
    i = 0
    while i <= n:
        #print(i) #打印i
        #return i #返回第一个i(即0),结束函数的运行
        b = yield i #将函数变成一个generator,直接在yield处暂停了,没有赋值操作
        i += 1
#getNum(5)
print(getNum(5))
a = getNum(5) 
for i in a:
    print(i)
  • a = [ x for x in range(100000)]会占用很大内存
    a = (x for x in range(100000))生成迭代器,用next(a)一次输出一个数据
  • 迭代器:能被next()不断调用返回下一个对象
    可迭代对象:list string dict ≠ 迭代器
list = [1,2,3,4]
a = iter(list)
print(a)
print(next(a))
  • isinstance(s,str)判断数据类型,相当于type(s) == str
  • 变量的作用域
    局部变量:声明在函数内部的是局部变量,外部无法使用
    全局变量:大家都能使用
  • 修改全局变量:
    对于不可变类型:在函数内用global修改为全局变量
    对于可变类型::可以不使用global声明
def fun1():
    global a
    a = 1
    print(a)
def fun2():
    global a
    a = 2
    print(a)
a = 3
fun1()
fun2()
print(a)

输出为:
1
2
2

  • 递归函数
def main(n):
    print(n)
    if n == 3:
        print('start')
    else:
        main(n+1)
    print(n)
main(1)

输出:
1
2
3
'start'
3
2
1
分析:
main(1)=print(1)+main(2)+print(1)=print(1)+print(2)+main(3)+print(2)+print(1)=print(1)+print(2)+print(3)+print('start')+print(3)+print(2)+print(1)

  • 匿名函数:lambda [参数](可有可无): 表达式(相当于return xx)
    lambda内部一般只能放简单的表达式,特殊地,s = lambda x,y : x if x > y else y
    没有参数:s = lambda : 'abc';print(s())
    一个参数:s = lambda x : x*2;print(s(3))
    多个参数:s = lambda x,y : x+y;print(s(1,2))
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容