zoukankan      html  css  js  c++  java
  • day02-模块、数据类型、三元运算、列表、元组

    1.1  模块

    导入系统自带模块

     1 import sys
     2 
     3 #print(sys.path)#打印环境变量
     4 
     5 
     6 print(sys.argv) #打印脚本相对路径
     7 
     8 print(sys.argv[2])
     9 
    10 
    11 
    12 
    13 import os
    14 
    15 #cmd_res = os.system("dir") #打印当前路径下的文件,只能显示,不能保存结果为一个变量
    16 
    17 cmd_res = os.popen("dir").read() #这样可以保存为变量
    18 
    19 print(cmd_res)#打印变量
    20 
    21 
    22 
    23 os.mkdir("new_dir")#创建新目录

     新建一个模块,即是一个Python脚本。

    导入模块时,默认在当前目录下寻找这个模块,要么在baselibsite_packages下

    1.2  Pyc是什么?

    在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。

    我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

    当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

    当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

    所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

    1.3  数据类型

    1)数字(int(整型)、long(长整型)、float(浮点型)、复数)

    在Python3中,取消了长整型这个概念,所有的都是int整型。

    2)布尔值

    真或假,1或0

    a = True
    if
    a:
        print("a")

    3)字符串

    Str,文本总是Unicode

    4)bytes类型

    二进制数据由bytes类型表示

    1 msg = "周琼杰"
    2 
    3 print(msg)
    4 
    5 print(msg.encode(encoding="utf-8")) #将字符串类型转换成bytes类型
    6 
    7 print(msg.encode(encoding="utf-8").decode(encoding="utf-8"))#将bytes类型转换成字符串类型

    1.4  三元运算

    1 a,b,c =1,3,5
    2 
    3 d =a if a>b else c #如果a大于b,那么d就等于a,否则d就等于c
    4 
    5 print(d)

    1.5  列表

     1 names = ["zhouqiongjie","zhangdan","qiongjie","dandan"]  #列表
     2 
     3 print(names)
     4 
     5 print(names[0],names[3])  #取列表中的第一个和第4个值
     6 
     7 print(names[1:3])       #顾头不顾尾,取第二个和第三个值
     8 
     9 print(names[-1])#在不知道列表有多长的情况下,取最后一个值
    10 
    11 print(names[-2:]) #取列表中最后两个值
    12 
    13 print(names[:3]) #取前面三个值
    
    
     1 names.append("lisi") #追加插入
     2 
     3 print(names)
     4 
     5 
     6 
     7 names.insert(1,"wangwu")  #在列表指定位置插入,其它值后移
     8 
     9 print(names)
    10 
    11 
    12 
    13 names[1] ="zhaoliu"  #替换一个值
    14 
    15 print(names)

    #删除有3中方式
    1 names.remove("zhaoliu")
    2 
    3 del names[1]
    4 
    5 names.pop(1)
    6 
    7 print(names)

    1 print(names.index("lisi"))  #查找李四所在列表中的位置
    2 
    3 print(names[names.index("lisi")])
    4  
    5 
    6 names = ["zhouqiongjie","zhangdan","qiongjie","dandan"]
    7 
    8 print(names.count("zhangdan"))   #统计这个值有几个
     1 #names.clear()#清空列表
     2 
     3 #names.reverse() #将列表中的值反转
     4 
     5 #names.sort() #按照Assic码顺序进行排序
     6 
     7 names02 =["haha","xixi","heihei"]
     8 
     9 names.extend(names02)  #将两个列表合并
    10 
    11 #del names02     #删除一个变量
    12 
    13 print(names,names02)
     1 names = ["zhouqiongjie","zhangdan","qiongjie","dandan"]
     2 
     3 names2 = names.copy()
     4 
     5 print(names,names2)
     6 
     7 names[1] = "周琼杰" #只能使用下标,进行赋值
     8 
     9 print(names)
    10 
    11 print(names2) #names2的值不变

    子列表的情况下,浅拷贝

     1 names = ["zhouqiongjie","zhangdan",["haha","hehe"],"qiongjie","dandan"]
     2 
     3 names2 = names.copy()
     4 
     5 print(names,names2)
     6 
     7 names[0] = "周琼杰" #只能使用下标,进行赋值
     8 
     9 names[2][0] = "哈哈"
    10 
    11 print(names)
    12 
    13 print(names2)
     

    #打印值,names进行了浅copy。第一层不变,但是第二层变了
    ['zhouqiongjie', 'zhangdan', ['哈哈', 'hehe'], 'qiongjie', 'dandan']

    导入copy模块

     1 import copy
     2 
     3 names = ["zhouqiongjie","zhangdan",["haha","hehe"],"qiongjie","dandan"]
     4 
     5 names2 = copy.copy(names)#实现浅copy的三种方式
     6 ‘’’
     7 names2=names[:]
     8 
     9 names2=list(names)
    10 ‘’’
    11 
    12 print(names,names2)
    13 
    14 names[0] = "周琼杰" #只能使用下标,进行赋值
    15 
    16 names[2][0] = "哈哈"
    17 
    18 print(names)
    19 
    20 print(names2)

    深拷贝
     1 import copy
     2 
     3 names = ["zhouqiongjie","zhangdan",["haha","hehe"],"qiongjie","dandan"]
     4 
     5 names2 = copy.deepcopy(names)  #深拷贝,第一层和第二层都变
     6 
     7 print(names,names2)
     8 
     9 names[0] = "周琼杰" #只能使用下标,进行赋值
    10 
    11 names[2][0] = "哈哈"
    12 
    13 print(names)
    14 
    15 print(names2)

    #打印输出,

    ['zhouqiongjie', 'zhangdan', ['haha', 'hehe'], 'qiongjie', 'dandan']

    列表的循环:

     1 names = ["zhouqiongjie","zhangdan",["haha","hehe"],"qiongjie","dandan"]
     2 
     3 print(names[0:-1:2])  #步长切片
     4 
     5 print(names[::2])
     6 
     7 
     8 
     9 for i in names:  #循环打印
    10 
    11     print(i)

    1.6  元组

    元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

    names=(“zhou”,”zhang”) #只能查询,不能修改

  • 相关阅读:
    sql 查出一张表中重复的所有记录数据
    几种常见SQL分页方式效率比较
    Redis命令参考之复制(Replication)
    Redis-benchmark使用总结
    redis压力测试详解
    c#:ThreadPool实现并行分析,并实现线程同步结束
    C#多线程学习 之 线程池[ThreadPool]
    [C#基础]ref和out的区别
    C#:ref和out的联系及区别。
    生产环境中使用Docker Swarm的一些建议
  • 原文地址:https://www.cnblogs.com/Study-Blog/p/6478672.html
Copyright © 2011-2022 走看看