【4.2】python常用的内置函数--index/rindex/get/callable/locals
一、index与rindex
>>> s='love python love python!'
>>> s.index('python') #返回左边第一个子串'python'的下标
5
>>> s.rindex('python')#返回右边第一个子串'python'的下标
17
a ='aa12bb12cc12dd'
>>> a[:a.rindex('12')]
'aa12bb12cc'
str.index(sub[, start[, end]] ) 只能返回范围内的第一次出现该元素的index,但有的时候我们想要返回string内此元素所有的index,可以这样做
find_all = lambda c, s: [x for x in range(c.find(s), len(c)) if c[x] == s]
S = 'loveleetcode'
C = 'e'
index_all = find_all(S, C) # [3, 5, 6, 11]
二、字典 get()方法
语法:
dict.get(key, default=None)
参数:
下面是详细参数:
key:key在字典中查找。 default:在key不存在的情况下返回值None。
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7}
print "Value : %s" % dict.get('Age')
print "Value : %s" % dict.get('Sex', "Never")
这将输出以下结果:
Value : 7
Value : Never
三、callable
-
方法用来检测对象是否可被调用,可被调用指的是对象能否使用()括号的方法调用。
>>> callable(callable) True >>> callable(1) False >>> 1() Traceback (most recent call last): File "<pyshell#5>", line 1, in 1() TypeError: 'int' object is not callable >>>
-
可调用对象,在实际调用也可能调用失败;但是不可调用对象,调用肯定不成功。
-
类对象都是可被调用对象,类的实例对象是否可调用对象,取决于类是否定义了__call__方法。
>>> class A: #定义类A pass >>> callable(A) #类A是可调用对象 True >>> a = A() #调用类A >>> callable(a) #实例a不可调用 False >>> a() #调用实例a失败 Traceback (most recent call last): File "<pyshell#31>", line 1, in a() TypeError: 'A' object is not callable >>> class B: #定义类B def __call__(self): print('instances are callable now.') >>> callable(B) #类B是可调用对象 True >>> b = B() #调用类B >>> callable(b) #实例b是可调用对象 True >>> b() #调用实例b成功 instances are callable now.
四、locals
[python] view plain copy print?
def foo(arg, a):
x = 1
y = 'xxxxxx'
for i in range(10):
j = 1
k = i
print locals()
#调用函数的打印结果
foo(1,2)
#{'a': 2, 'i': 9, 'k': 9, 'j': 1, 'arg': 1, 'y': 'xxxxxx', 'x': 1}
配合着format用起来可爽了
cmd = (gzip_cmd + " | head -n {head_count} | "
"{seqtk} sample -s42 - {tocheck} | "
"awk '{{if(NR%4==2) print length($1)}}' | sort | uniq -c")
count_out = subprocess.check_output(cmd.format(**locals()), shell=True,
executable="/bin/bash")
参考资料
这里是一个广告位,,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn