之前面试py web后端开发
被问到如何反转一个数据(?不知道如何表达)
想到了切片
示例:
>>> mystr = 'shiving2014'
>>> mylist = ['s','h','i','v',2,0,1,4]
>>> mytuple = ('s','h','i','v',2,0,1,4)
>>>
>>> mystr[::-1]
'4102gnivihs'
>>> mylist[::-1]
[4, 1, 0, 2, 'v', 'i', 'h', 's']
>>> mytuple[::-1]
(4, 1, 0, 2, 'v', 'i', 'h', 's')
>>>
切片很灵活,所以意识半会也没想到其他什么内置函数,方法阿
当然面试也失败了- -!
回来后蕃薯看到了这些方法
sort(),sorted(),reverse(),reversed()
测试数据
# -*- coding:utf-8 -*- mystr = 'shiv2014' mylist = ['s','h','i','v',2,0,1,4] mytuple = ('s','h','i','v',2,0,1,4)
总结一下用法
sort()是可变对象(字典、列表)的方法,无参数,无返回值,sort()会改变可变对象,因此无需返回值。sort()方法是可变对象独有的方法或者属性,而作为不可变对象如元组、字符串是不具有这些方法的,如果调用将会返回一个异常。
try:
mystr.sort()
print mystr
except Exception, exp:
print exp
try:
mylist.sort()
print mylist
except Exception, exp:
print exp
try:
mytuple.sort()
print mytuple
except Exception, exp:
print exp
'str' object has no attribute 'sort'
[0, 1, 2, 4, 'h', 'i', 's', 'v']
'tuple' object has no attribute 'sort'
[Finished in 0.0s]
sorted()是python的内置函数,并不是可变对象(列表、字典)的特有方法,sorted()函数需要一个参数(参数可以是列表、字典、元组、字符串),无论传递什么参数,都将返回一个以列表为容器的返回值,如果是字典将返回键的列表。
try:
print sorted(mystr)
except Exception, exp:
print exp
try:
print sorted(mylist)
except Exception, exp:
print exp
try:
print sorted(mytuple)
except Exception, exp:
print exp
['0', '1', '2', '4', 'h', 'i', 's', 'v']
[0, 1, 2, 4, 'h', 'i', 's', 'v']
[0, 1, 2, 4, 'h', 'i', 's', 'v']
[Finished in 0.0s]
reverse()是可变对象(字典、列表)的方法,无参数,无返回值,sort()会改变可变对象,因此无需返回值。sort()方法是可变对象独有的方法或者属性,而作为不可变对象如元组、字符串是不具有这些方法的,如果调用将会返回一个异常。
try:
print mystr.reverse()
except Exception, exp:
print exp
try:
mylist.reverse()
print mylist
except Exception, exp:
print exp
try:
print mytuple.reverse()
except Exception, exp:
print exp
'str' object has no attribute 'reverse'
[4, 1, 0, 2, 'v', 'i', 'h', 's']
'tuple' object has no attribute 'reverse'
[Finished in 0.0s]
reversed()是python的内置函数,并不是可变对象(列表、字典)的特有方法,reversed()函数需要一个参数(参数可以是列表、字典、元组、字符串),无论传递什么参数,都将返回一个迭代对象(iterator)。
try:
print reversed(mystr)
except Exception, exp:
print exp
try:
print reversed(mylist)
except Exception, exp:
print exp
try:
print reversed(mytuple)
except Exception, exp:
print exp
<reversed object at 0x7fe8bc7a5d10>
<listreverseiterator object at 0x7fe8bc7a5d10>
<reversed object at 0x7fe8bc7a5d10>
[Finished in 0.0s]
接下来在说一下简单的说iterator只是提供一个接口,每次迭代可以产生一个值,到没有值为止
迭代方法
iter.next()
在for语句和list comprehension中,都是隐式调用了这个函数。所以可以直接
for obj in some_container:
pass
以mylist = ['s','h','i','v',2,0,1,4]为例
>>> mylist = ['s','h','i','v',2,0,1,4]
>>> rlist = reversed(mylist)
>>> rlist.next()
4
>>> rlist.next()
1
>>> rlist.next()
0
>>> rlist.next()
2
>>> for item in rlist:
... print item,
...
v i h s
>>>
结束
写了这么多感觉py很乱,具体的以后用到了再说吧。。。