python学习记录——day9

先来一个小题
约瑟夫环:30个人围成一圈,依次报数,数到9那么第九个人就被弄死。。然后重新报数,最后剩下15个人都是基督徒,问,最开始怎么站的?

def main():
    num = 9
    list1 = [x for x in range(30)]
    list2 = [0]*30
    for i in range(15):
        list2[list1[num-1]] = 1
        list1 = list1[num:]+list1[:num-1]
    print(list2)

今天主要讲了四个数据类型

列表 元组 集合 字典

  • 列表:

sys.getrefcount(list1)得到对象引用技术的值

import sys
list1 = [0]*10
list2 = list1
list3 = list2
print(sys.getsizeof(list1))
print(sys.getrefcount(list1))
del list2
del list3
del list1[0]
print(sys.getrefcount(list1))
mylist = [x + y for x in 'ABCDE' for y in '1234567']
mylist = mylist+[20,30]
print(mylist)
str1 = 'dsag'
str1.upper()
  • 二维数组
def main():
    names = ['刘','关','张','赵','马']
    subject = ['语文','数学','python']
    scores = [[0]*len(subject) for _ in range(len(names))]
    print(id(scores[0][1]))
    print(id(scores[1]))
    for row ,name in enumerate(names):
        print('请输入%s的成绩'%name)
        for col,sub in enumerate(subject):
            (scores[row])[col] = input('%s'%sub)
    print(scores)
不可这样写scores = [[0] * len(subject)]*len(names)
这样只是创建5个列表的3个引用,地址是一样的,一变全变
  • 元组:

元组不可写,只可读
找出第二大的数

def second_max(x):
    (m1,m2) = (x[0],0) if x[0] > x[1] else (x[1],0)
    for index in range(2,len(x)):
        if x[index] > m1:
            m2 = m1
            m1 = x[index]
        elif x[index] > m2 and x[index]!=m1:
            m2 = x[index]
    return (m1,m2) if m2 != 0 else (m1,'没有第二大')
  • 集合

集合是无序的

def main():
    #集合是无序的
    list1 = [1,1,2,2,3,3,]
    print(list1)
    tuple1 = (1,1,2,2,3,3)
    print(tuple1)
    set1 = {1,1,3,3,2,2}
    print(set1)
    set1.add(5)
    set1.add(4)
    print(set1)
    set2 = {1,3,5,7,9}
    print(set2)
    set3 = set1.intersection(set2)#交集
    set3 = set1 & set2
    print(set3)
    set3 = set1.union(set2)#并集
    set3 = set1 | set2
    print(set3)
    set3 = set1.difference(set2)#差集
    set3 = set1 - set2
    print(set3)
    set3 = set2 - set1
    set3 = set2.difference(set1)
    print(set3)
    set3 = set1.symmetric_difference(set2)#对称差
    set3 = set1 ^ set2
    print(set3)
    for i in set2:
        print(i)
    # print(set2[2]) 集合没有序列
    print(set2.pop())
    if 3 in set2:
        set2.remove(3)
    print(set2)
    print(set2.issubset(set1))#判断是不是子集
    print(set2<=set1)
    print(set1.issuperset(set2))#判断是不是超集
    print(set2>=set1)
    set4 = {1,2}
    print(set1.issuperset(set4))
    set5 = {88,5,2,5,67,3,143,789,456,13,546,68}
    print(set5)
    print(set5.pop())
    print(sorted(set5))
  • 字典
def main():
    dict1 = {'name':'宋佳鑫','age': 22,'gender': True}
    print(dict1['name'])
    dict1['name'] = 'god'
    print(dict1['name'])
    # dict1 += {'tel':'18883362575'}
    dict1.update(hight=175,fav=['吃','喝','玩'])
    print(dict1.pop('gender'))
    print(dict1.popitem())
    dict1['name'] = None
    del dict1['age']
    for x in dict1:
        print(x,'---->',dict1[x])
    dict1.setdefault('motto','heheda')#设默认值

作业

1.杨辉三角
def yanghui_triangle(n):
    """
    生成指定行数的杨辉三角
    :param n: 行数
    :return: 返回一个杨辉三角的二维数组
    """
    list1 = [[1],[1,1]]
    for i in range(2,n):
        list2 = [1]
        for j in range(i-1):
            a = list1[i-1][j+1]+list1[i-1][j]
            list2.append(a)
        list2.append(1)
        list1.append(list2)
    return list1

def my_print(l):
    #输出二维数组
    for i in range(len(l)):
        for j in range(len(l[i])):
            print(l[i][j],end='\t')
        print()

if __name__ == '__main__':
    # my_print(yanghui_triangle(10))
    my_print(helix_array(6))
2.螺旋矩阵
def helix_array(num):
    list1 = [[0]*num for _ in range(num)]
    x = 0 # 初始行
    y = 0 # 初始列
    value = 1 # 初始值
    direction = 'r' # 初始方向
    circle = 1 # 初始圈数
    while True:
        # 向右
        if direction == 'r':
            list1[x][y] = value
            if y >= num - circle:
                direction = 'd'
                continue
            y += 1
        # 向下
        if direction == 'd':
            list1[x][y] = value
            if x >= num - circle:
                direction = 'l'
                continue
            x += 1
        #向左
        if direction == 'l':
            list1[x][y] = value
            if y <= circle-1:
                direction = 'u'
                continue
            y -= 1
        #向上
        if direction == 'u':
            list1[x][y] = value
            if x-1 <= circle:
                direction = 'r'
                circle += 1
            x -= 1
        value += 1
        if value > num**2:
            break
    return list1

小知识

之前说过python内存回收机制:

Java是GC 而python和ios则是objc

GC会暂停整个程序的运行,深入内存去寻找垃圾,然后释放掉
安卓由Java编写的,而Java释放内存时,所有线程都要暂停以便GC,这就是安卓卡顿和闪退的原因,,,以至于很多游戏都有很多,加速,无敌等大招效果,其实无敌的这段时间就是在释放内存。。。不过如今的Java已经改善的很多

而ios的objc则是用计数来管理内存,对象引用一次+1,解引用一次-1,计数为0就立即释放内存
这样内存释放就及时、平滑、时机可控,,,但也有一个缺点,那就是有内存泄漏,要时刻保持清晰的对象间联系

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

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,631评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,133评论 25 707
  • 我戴上帽子 踏进一个人头济济的世界 那些人也同样都戴上了帽子 我们在公交里、地铁里推挤着 彼此遇见时 我们既是竞争...
    与自己赛跑的人阅读 232评论 0 1
  • 纵观张爱玲的一生,是幸运的,又是不幸的。 她的家世显赫,祖父张佩纶原是清末著名大臣,祖母李菊藕则是慈禧心腹中堂李鸿...
    风你轻轻吹阅读 253评论 1 3
  • 清风依旧乾坤笑,托起流云惬意飘。 好友相知缘分聚,一壶浊酒醉今朝。 作者王永豪(注:新韵)
    王永豪阅读 278评论 0 0