美文网首页大数据,机器学习,人工智能
零基础学Python--你应知道的30个小技巧

零基础学Python--你应知道的30个小技巧

作者: Q科技 | 来源:发表于2019-03-19 21:15 被阅读29次

    关于Python,可能有很多的初学者还没有什么概念!但是Python确实是一个非常容易学习的胶水语言,为了增加大家学习的乐趣,我们先来看看Python的一些小技巧。

    一、交换两个变量的值。

    在Python里面交换变量的值,不需要像C语言一下用异或操作,并且只需要一行就搞定了。

    a, b = 1, 2

    a, b = b, a

    二、多个变量赋值。

    在Python对多个变量进行赋值是非常方便的,可以在一行内进行各种形式的赋值。

    a, b, c = 1, 2, 3

    a, b, c = [1, 2, 3]

    a, b, c = (2 * i + 1 for i in range(3))

    a, (b, c), d = [1, (2, 3), 4]

    三、扩展赋值。

    可以说Python的技巧是非常的令人愉悦的,比如说,如下这种赋值方式。大家可以猜测一下结果是什么,然后实际去运行一下。

    a, *b, c = [1, 2, 3, 4, 5]

    四、列表中负的下标索引方式。

    这种方式给我们的编程真的是给了诸多便利,和C语言的负的下标不一样,Python将列表的首尾连接起来了,而C语言的负数下标则是按照内存的地址的偏移。

    a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    a[-1]的值则为10,a[-2]的值则为9。

    五、列表切片。

    列表切片功能很多同学应该用的比较多了,确实是一项非常使用的功能。

    a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    a[2:8]的值为[2,3,4,5,6,7]。

    六、使用负的下标索引来切片。

    既然列表可以使用负的索引,那么肯定也可以使用负的索引来进行切片。比如:

    a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    其中a[-4:-2]的值为[7,8]。

    七、列表切片时使用步长。

    使用步长可以让Python对列表进行切片时跳过其中指定步长的值。

    a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    a[::2]的结果为[0, 2, 4, 6, 8, 10],而a[2:8:2]的结果为[2, 4, 6]。

    八、列表切片时使用负的切片。

    同样的我们在对列表切片时,可以使用负的步长。比如:

    a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    其中a[::-1]的值为[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0],而a[::-2]的值为[10, 8, 6, 4, 2, 0]。

    九、对列表切片进行修改。

    列表切片赋值可以很方便的去修改列表中的某一部分值。

    a = [1, 2, 3, 4, 5]

    a[2:4] = [0, 0]则a = [1, 2, 0, 0, 5],a[1:1] = [8, 9]则a = [1, 8, 9, 2, 3, 4, 5],a[1:-1] = []则a = [1, 5]。

    十、对切片进行命名。

    这类似于C语言里面定义了一个宏,我们可以去取个名字方便我们实际使用的时候使用。

    a = [0, 1, 2, 3, 4, 5]

    LASTTHREE = slice(-3, None,None)

    我们调用a[LASTTHREE]就可以达到slice同样的效果,其结果为[3, 4, 5]。

    十一、枚举列表中的索引和值。

    a = ['Hello', 'world', '!']

    for i, x in enumerate(a): print '{}: {}'.format(i, x)

    其运行结果为:

    0: Hello

    1: world

    2: !

    十二、枚举字典中的key和value。

    m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

    for k, v in m.items(): print '{}: {}'.format(k, v)

    其运行结果为:

    a: 1

    c: 3

    b: 2

    d: 4

    十三、拆分和重组列表。

    a = [1, 2, 3]

    b = ['a', 'b', 'c']

    z = zip(a, b)的结果则为z[(1, 'a'), (2, 'b'), (3, 'c')],如果再对z进行zip(*z),我们发现结果为[(1, 2, 3), ('a', 'b', 'c')]。

    十四、对列表进行分组。

    a = [1, 2, 3, 4, 5, 6]

    group_adjacent = lambda a, k: zip(*([iter(a)] * k))

    我们使用group_adjacent(a, 3)的结果为[(1, 2, 3), (4, 5, 6)],使用group_adjacent(a, 2)的结果为[(1, 2), (3, 4), (5, 6)]。

    十五、交换字典的key和value。

    m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

    dict(zip(m.values(), m.keys()))

    其结果为:{1: 'a', 2: 'b', 3: 'c', 4: 'd'}

    十六、对列表进行降维。

    a = [[1, 2], [3, 4], [5, 6]]

    list(itertools.chain.from_iterable(a))

    其结果为:[1, 2, 3, 4, 5, 6]。

    十七、构造一个生成器。

    g = (x ** 2 for x in xrange(10))

    next(g)的运行结果为0,而如果我们再一次运行next(g),则结果为1,如果继续运行一次,则结果为4。

    十八、构造一个字典。

    m = {x: x ** 2 for x in range(5)}

    其运行结果为:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}。

    十九、用字典的方式来交换字典的key和value。

    m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

    {v: k for k, v in m.items()}

    其结果为:{1: 'a', 2: 'b', 3: 'c', 4: 'd'}。

    二十、为元组进行命名。

    Point = collections.namedtuple('Point', ['x', 'y'])

    p = Point(x=1.0, y=2.0)

    那么p.x的值为1.0而p.y的值为2.0。

    二十一、给字典排序。

    m = dict((str(x), x) for x in range(10))

    我们可以看到其值为:1, 0, 3, 2, 5, 4, 7, 6, 9, 8,它的顺序是乱序的。如果我们使用如下的:

    m = collections.OrderedDict((str(x), x) for x in range(10))

    那么值为:0, 1, 2, 3, 4, 5, 6, 7, 8, 9,现在它是一个有秩序的字典了。

    二十二、合并两个字典。

    x = {'a': 1, 'b': 2}

    y = {'b': 3, 'c': 4}

    z = {**x, **y}

    其结果为{'c': 4, 'a': 1, 'b': 3}

    二十三、使用lambda来便捷创建函数。

    add = lambda x, y: x + y

    add(5, 3)

    二十四、反转一个字符串。

    a = "abcdefgh"

    print "Reverse is",a[::-1]

    其结果为:hgfedcba。

    二十五、矩阵转置。

    mat = [[1, 2, 3], [4, 5, 6]]

    zip(*mat)

    其结果为: [(1, 4), (2, 5), (3, 6)]。

    二十六、字符串连接。

    a = ['my', 'life', 'is', 'pure']

    ' '.join(a)

    其结果为:my life is pure。

    二十七、字符串重复生成。

    a = 'python'*5

    其结果为:pythonpythonpythonpythonpython

    二十八、字符串转为数组。

    a ="my life is brilliant"

    result = map(lambda x:int(x) ,raw_input().split())

    其结果为['my', 'life', 'is', 'brilliant']。

    二十九、多个条件不等式。

    n = 10

    result = 1 < n < 20

    其结果为:True。这是我们C程序员梦寐以求的写法吧!

    三十、找到列表里出现频率最高的值。

    test = [1,2,3,4,2,2,3,1,4,4,4]

    print(max(set(test), key=test.count))

    这些小技巧可以看到Python的强大确实是可见一斑,当然Python的魅力不仅仅如此。当你进入Python的世界之后,你会发现它不同于其他语言,甚至对于完全没有基础的人,Python也非常的容易上手,并且极大的成为你的工作的扩展。可以说各行各业的人都可以使用Python来帮助自己获得更强的掌控力。

    人工智能与深度学习做量化请关注:AI量化(https://t.zsxq.com/RvfY37y) 星球限时免费,如需加入,请私信我获得免费邀请码!

    零基础学习Python与深度学习应用请关注星球:Python与深度学习 https://t.zsxq.com/bUFayZ3

    微信公众号:QTechAI

    相关文章

      网友评论

        本文标题:零基础学Python--你应知道的30个小技巧

        本文链接:https://www.haomeiwen.com/subject/gslomqtx.html