zoukankan      html  css  js  c++  java
  • Python的一些小技巧搜集与总结(持续更新)

    一行python实现斐波那契数列:

    fib=lambda n:0 if n<1 else 1 if n<2 else  fib(n-1)+fib(n-2)

    字典排序:

    dic = {'a':3 , 'b':2 , 'c': 1}
    dic1=sorted(dic.iteritems(),key=lambda x:x[0],reverse=True)
    dic2=sorted(dic.iteritems(),key=lambda x:x[1],reverse=False)
    结果:

    dic1=[('c', 1), ('b', 2), ('a', 3)]
    dic2=[('c', 1), ('b', 2), ('a', 3)]

    列表排序:

    >>> x=[(1,'c'),(2,'a'),(3,'b')]
    >>> x
    [(1, 'c'), (2, 'a'), (3, 'b')]
    >>> x.sort()
    >>> x
    [(1, 'c'), (2, 'a'), (3, 'b')]

    >>> x.sort(key=lambda i:i[1])
    >>> x
    [(2, 'a'), (3, 'b'), (1, 'c')]

    将嵌套列表转换成单一列表:

    import itertools

    a = [[1, 2], [3, 4], [5, 6,7]]
    a1=list(itertools.chain.from_iterable(a))

    判断列表中是否有重复元素:

    def Judge(list):
      return len(list)>len(set(list))

    写一个函数, 输入一个字符串, 返回倒序排列的结果:

    def reverse1(string):
      return string[::-1]

    def reverse2(string):
      tgt=list(string)
      for i in range(len(string)):
        tgt[i]=string[len(string)-1-i]
      string=''.join(tgt)
      return string

    合并两列表并排序
    list1 = [2, 3, 8, 4, 9, 5, 6]
    list2 = [5, 6, 10, 17, 11, 2]
    a=sorted(list(set(list1+list2)))

    另外用快排也行

    命名元组

    如果不需要为对象添加行为,并且也预先知道有那些属性需要存储,可以选择使用命名元组,命名元组是只含有属性的元组,对于只读数据是个很好的方式。

    >>> from collections import namedtuple

    >>> Stock = namedtuple('Stock','symbol current high low')
    >>> s1=Stock('GOOG',613,625,610)
    >>> s1.symbol
    'GOOG'

    二维数组转置

    a=[[1,2,3],[4,5,6],[7,8,9]]
    a=[[d[i] for d in a] for i in range(len(a[0]))]
    print(a)

    则a变为[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

  • 相关阅读:
    1024 Calendar Game
    外存管理与文件系统(1)
    1008 Gnome Tetravex
    写给想用技术改变世界的年轻人by 沃兹
    为什么VS2008里没有Silverlight呢?
    QQ消息群发器实现原理及核心代码
    JavaScript检测多组Radio是否选择
    C#操作Excel(导入导出)
    String.Split 方法有6个重载函数:
    【原】Ext2.2学习系列:ExtJS与.NET结合开发实例全部Ext2.2示例索引贴 (共收录56篇文章)
  • 原文地址:https://www.cnblogs.com/lovealways/p/6774064.html
Copyright © 2011-2022 走看看