• 学习python,第五篇


    Python中%r和%s的详解及区别

    %r用rper()方法处理对象
    %s用str()方法处理对象

    有些情况下,两者处理的结果是一样的,比如说处理int型对象。

    例一:

    print "I am %d years old." % 22
    print "I am %s years old." % 22
    print "I am %r years old." % 22

    返回结果:

    I am 22 years old.
    I am 22 years old.
    I am 22 years old.
     

    另外一些情况两者就不同了

    例二:

    text = "I am %d years old." % 22
    print "I said: %s." % text
    print "I said: %r." % text 
     

    返回结果:

    I said: I am 22 years old..
    I said: 'I am 22 years old.'. // %r 给字符串加了单引号
     

    再看一种情况

    例三:

    import datetime
    d = datetime.date.today()
    print "%s" % d
    print "%r" % d
     

    返回结果:

    2014-04-14
    datetime.date(2014, 4, 14)
     

    可见,%r打印时能够重现它所代表的对象(rper() unambiguously recreate the object it represents)


    列表[ ]

    详细介绍连接:http://www.runoob.com/python3/python3-list.html

    name = ["ZhangYang","GuYun","DengHaiJun","LiuWenWu","LuoJie"]
    name.append("LiangWenJuan")   # 追加,放最后面
    name.insert(1,"CheJiaNing")   #在指定的位置插入
    name[2] = "XiaJiang"    #修改
    name1 = ["AnHua","SuoXueYan"]
    #name.remove("ZhangYang") #删除
    #del name[0]    #删除的另一种方式
    #name.pop()   #删掉最后一个   如果括号内输入指定数字,就等同与del name[0]
    #print(name.index("XiaJiang"))    #找出他的位置
    #print(  name[name.index("XiaJiang")]  )
    #print(name.count("DengHaiJun"))   # 统计
    #name.clear()   #清理列表
    #name.reverse()    #反转
    #name.sort()    #排序
    name.extend(name1)   #合并
    #del name1     #删除变量
    print(name)
    #print(name[0],name[2])
    #print(name[1:3])   #切片    包头不包尾  print(name[:3])  一样的作用
    #print(name[-1])   #取最后一个
    #print(name[-3:])    #取最后的值,包括最后一个
    list

    copy()与deepcopy()区别  

     原创地址https://blog.csdn.net/qq_32907349/article/details/52190796

         先上结论:

    —–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。 
    —–而浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。这就和我们寻常意义上的复制有所不同了。

    以下可以帮助理解:

    对于简单的 object,用 shallow copy 和 deep copy 没区别

    复杂的 object, 如 list 中套着 list 的情况,shallow copy 中的 子list,并未从原 object 真的「独立」出来。也就是说,如果你改变原 object 的子 list 中的一个元素,你的 copy 就会跟着一起变。这跟我们直觉上对「复制」的理解不同。

    import copy
    
    person=['name',['saving',100]]
    '''
    p1=copy.copy(person)     #浅copy
    p2=person[:]
    p3=list(person)
    '''
    p1=person[:]
    p2=person[:]
    p3=list(person)
    p4=copy.deepcopy(person)  #深copy
    p1[0]='alex'
    p2[0]='fengjie'
    p3[0]='deng'
    
    p1[1][1]=50
    
    print(p1)
    print(p2)
    print(p3)
    print(p4)
    copoy

    isdigit() 方法  检测字符串是否由数字组成

    返回值是 True  False

    实例:

    str = "1234567"
    print(str.isdigit())
    
    结果是:True
    
    str = "asddfggg321"
    print(str.isdigit())
    
    
    结果是:False
    View Code

    enumerate()函数

    原文地址:https://blog.csdn.net/churximi/article/details/51648388

    • enumerate()是python的内置函数
    • enumerate在字典上是枚举、列举的意思
    • 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
    • enumerate多用于在for循环中得到计数

    举例:

    • 如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写:
    • list1 = ["", "", "一个", "测试"]
      for i in range (len(list1)):
          print i ,list1[i]
    • 上述方法有些累赘,利用enumerate()会更加直接和优美:
    • list1 = ["", "", "一个", "测试"]
      for index, item in enumerate(list1):
          print index, item
      >>>
      0 这
      12 一个
      3 测试
    • enumerate还可以接收第二个参数,用于指定索引起始值,如:
    • list1 = ["", "", "一个", "测试"]
      for index, item in enumerate(list1, 1):
          print index, item
      >>>
      123 一个
      4 测试
    • 如果要统计文件的行数,可以这样写:

      count = len(open(filepath, 'r').readlines())
    • 这种方法简单,但是可能比较慢,当文件比较大时甚至不能工作。

      可以利用enumerate():

      count = 0
      for index, line in enumerate(open(filepath,'r')): 
          count += 1

    len() 方法 返回对象(字符、列表、元组等)长度或项目个数

    产品  product

    薪水  salary

    数字  digit

    项目  item

    枚举  enumerate

    选择  choice

    索引  index

    补充  added

    聪明不是学习编程成功的关键,坚持和勤于思考才是。
  • 相关阅读:
    使用CTE分页 在MSSQL2005上可以使用
    uc_client目录
    用SQL语句添加删除修改字段
    for all your mad scientific needs think geek
    C++:Prototype模式去掉Clone方法
    linux命令:top
    linux命令:time
    C++:运行期断言和编译期断言
    内核分析:EXPORT_SYMBOL解析
    Linux工具:使用SED编辑器
  • 原文地址:https://www.cnblogs.com/itxpl/p/8760054.html
Copyright © 2020-2023  润新知