学习python,第五篇
Python中%r和%s的详解及区别
%r用rper()方法处理对象
%s用str()方法处理对象
有些情况下,两者处理的结果是一样的,比如说处理int型对象。
例一:
print "I am %d years old." % 22print "I am %s years old." % 22print "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." % 22print "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-14datetime.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:]) #取最后的值,包括最后一个
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)
isdigit() 方法 检测字符串是否由数字组成
返回值是 True False
实例:
str = "1234567" print(str.isdigit()) 结果是:True str = "asddfggg321" print(str.isdigit()) 结果是:False
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 这 1 是 2 一个 3 测试
- enumerate还可以接收第二个参数,用于指定索引起始值,如:
-
list1 = ["这", "是", "一个", "测试"] for index, item in enumerate(list1, 1): print index, item >>> 1 这 2 是 3 一个 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
浙公网安备 33010602011771号