py知识点拾遗之sort(),sorted(),reverse(),reversed()

之前面试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很乱,具体的以后用到了再说吧。。。

posted @ 2014-12-18 13:34  batch.me  阅读(395)  评论(0编辑  收藏  举报