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:]) #取最后的值,包括最后一个
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