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

  • 相关阅读:
    1300多万条数据30G论坛大数据优化实战经验小结(转)
    spring 攻略第二版文摘
    关于extjs中动态添加TabPanel的tab项并以iframe显示的整理(转)
    effective_java_2nd_endition文摘
    软件开发中常见的十大系统瓶颈(转)
    浅谈JAVA集合框架(转)
    java EE设计模式spring企业级开发最佳实践文摘
    layout 布局(转)
    COM高手总结的八个经验和教训
    IShellLink应用(创建快捷方式)
  • 原文地址:https://www.cnblogs.com/shiv/p/4171508.html
Copyright © 2020-2023  润新知