17 个非常有用的 Python 技巧

选自Hackernoon

Python 是一门非常优美的语言,其简洁易用令人不得不感概人生苦短。在本文中,作者 Gautham Santhosh 带我们回顾了 17 个非常有用的 Python 技巧,例如查找、分割和合并列表等。这 17 个技巧都非常简单,但它们都很常用且能激发不一样的思路。

很多人都知道 Python 是一种高级编程语言,其设计的核心理念是代码的易读性,以及允许编程者通过若干行代码轻松表达想法创意。

实际上,很多人选择学习 Python 的首要原因是其编程的优美性,用它编码和表达想法非常自然。此外,Python 的编写使用方式有多种,数据科学、网页开发、机器学习皆可使用 Python。Quora、Pinterest 和 Spotify 都使用 Python 作为其后端开发语言。

1.交换变量值

""" pythonic way of value swapping """
a,b = 5,10
print(a,b)
a,b = b,a
print(a,b)

2.将列表中的所有元素组合成字符串

a = ["Python","is","awesome"]
print(" ".join(a))

3.查找列表中频率最高的值

""" most frequent element in a list """
a = [1,2,3,1,2,3,2,2,4,5,1]
print(max(set(a),key = a.count))
""" using Counter from collections """
from collections import Counter
cnt = counter(a)
print(cnt.most_common(3))

4.检查两个字符串是不是由相同字母不同顺序组成

from collections import Counter
Counter(str1) == Counter(str2)

5.反转字符串

"""reversing string with special case of slice step param"""
a = 'abcdefghijklmnopqrstuvwxyz'
print(a[::-1])

"""iterating over string contents in recerse effiviently."""
for char in reversed(a):
    print(char)

"""reversing an integer through type conversion and slicing."""
num = 123456789
print(int(str(num)[::-1]))

6.反转列表

"""reversing list with special case of slice step param"""
a = [5,4,3,2,1]
print(a[::-1])

"""iterating over list contents in reverse efficiently."""
for ele in recersed(a):
    print(ele)

7.转置二维数组

"""transpose 2d arrau [[a,b],[c,d],[e,f]] -> [[a,c,e],[b,d,f]]"""
original = [['a','b'],['c','d'],['e','f']]
transposed = zip(*original)
print(list(transposed))

8.链式比较

"""chained comparison with all kind of operators"""
b = 6
print(4 < b < 7)
print(1 == b < 20)

9.链式函数调用

"""calling different functions with same arguments based on condition"""
def product(a,b):
    return a *b
def add(a,b):
    return a + b
b = True
print((product if b else add)(5,7))

10.复制列表

"""a fast way to make a shallow copy of a list"""
b = a
b[0] = 10
"""both a and b will be [10,2,3,4,5]"""
b = a[:]
b[0] = 10
"""only b will change to [10,2,3,4,5]"""

"""copy list by typecasting method"""
a = [1,2,3,4,5]
print(list(a))

"""using the list.copy() method (python3 only)"""
a = [1,2,3,4,5]
print(a.copy())

"""copy nested lists using copy.deepcopy"""
from copy import deepcopy
l = [[1,2],[3,4]]
l2 = deepcopy(l)
print(l2)

11.字典 get 方法

"""returnig None or default calue, when key is not in dict"""
d = {'a': 1,'b':2}
print(d.get('c',3))

12.通过「键」排序字典元素

""" Sort a dictionary by its values with the built-in sorted() function and a 'key' argument. """
d = {'apple': 10,'orange': 20,'banana': 5,'rotten tomato': 1}
print(sorted(d.items(), key=lambda x: x[1]))

""" Sort using operator.itemgetter as the sort key instead of a lambda """
from operator import itemgetter
print(sorted(d.items(), key=itemgetter(1)))

"""Sort dict keys by value"""
print(sorted(d, key=d.get))

13.For Else

"""else gets called when for loop does not reach break statement"""
a = [1,2,3,4,5]
for el in a:
    if el == 0:
        break
else:
    print('did not break out of for loop')

14.转换列表为逗号分割符格式

"""converts list to comma separated string"""
items = ['foo', 'bar', 'xyz']
print(','.join(items))

"""list of numbers to comma separated"""
numbers = [2,3,5,10]
print(','.join(map(str, numbers)))

"""list of mix data"""
data = [2, 'hello', 3, 3.4]
print(','.join(map(str, data)))

15.合并字典

"""merge dict's"""
d1 = {'a': 1}
d2 = {'b': 2}

# python 3.5
print({**d1, **d2})
print(dict(d1.items() | d2.items()))
d1.update(d2)
print(d1)

16.列表中最小和最大值的索引

"""Find index of Min/Max Element."""
lst = [40, 10, 20, 30]
def minIndex(lst):
    return min(range(len(lst)), key=lst.__getitem__)
def maxIndex(lst):
    return max(range(len(lst)), key=lst.__getitem__)
print(minIndex(lst))
print(maxIndex(lst))

17.移除列表中的重复元素

"""remove duplicate items from list. note: does not preserve the original list order"""
items = [2, 2, 3, 3, 1]
newitems2 = list(set(items))
print(newitems2)

"""remove dups and keep order"""
from collections import OrderedDict
items = ["foo", "bar", "bar", "foo"]
print(list(OrderedDict.fromkeys(items).keys()))
Last modification:May 24, 2020
如果觉得我的文章对你有用,请随意赞赏