Fork me on GitHub

Python中的实用小技巧

img

Python是一门实用性非常高的语言,下面介绍一些Python使用过程中的一些小技巧.

十一个实用技巧

Trick #1

Reversing a string in Python:字符串倒置

1
2
3
a =  "codementor"
print "Reverse is",a[::-1]
# Reverse is rotnemedoc

Trick #2

Transposing a Matrix:矩阵转置

1
2
3
4
mat = [[1, 2, 3], [4, 5, 6]]
a = zip(*mat)
# [(1, 4), (2, 5), (3, 6)]
print(list(a)) # 需要加list来可视化这个功能

Trick #3

a = [1,2,3]

Store all three values of the list in 3 new variables:将列表赋值给变量

1
2
3
4
5
6
7
8
a = [1, 2, 3]
x, y, z = a
x
# 1
y
# 2
z
# 3

Trick #4

a = [“Code”, “mentor”, “Python”, “Developer”]

Create a single string from all the elements in list above:将列表内元素合并成一个字符串

1
2
print " ".join(a)
# Code mentor Python Developer

Trick #5

1
2
3
List 1 = ['a', 'b', 'c', 'd']

List 2 = ['p', 'q', 'r', 's']

Write a Python code to print

1
2
3
4
ap
bq
cr
ds

使用zip函数

1
2
for x, y in zip(list1,list2):
print x, y

Trick #6

Swap two numbers with one line of code:交换变量的值

1
2
3
4
5
6
7
a=7
b=5
b, a =a, b
a
# 5
b
# 7

Trick #7

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

Convert it to a single list without using any loops:不使用循环,将嵌套列表合并为一个列表

1
Output:- [1, 2, 3, 4, 5, 6]
1
2
3
4
import itertools 
list(itertools.chain.from_iterable(a))

#[1, 2, 3, 4, 5, 6]

Trick #8

Checking if two words are anagrams:判断两个字符串是否为互为倒序字符串

1
2
3
4
5
6
def is_anagram(word1, word2):
"""Checks whether the words are anagrams.
word1: string
word2: string
returns: boolean
"""
1
2
3
4
5
6
7
8
from collections import Counter
def is_anagram(str1, str2):
return Counter(str1) == Counter(str2)

is_anagram('abcd','dbca')
# True
is_anagram('abcd','dbaa')
# False

Trick #9

将一串数字转换为列表

1
2
3
4
5
6
7
8
a=[int(x) for x in input().split()]
print(a)

# Input
1 2 3 4

# Output
[1,2,3,4]

Trick #10

Merging dictionaries. Working only in python 3.5+:合并字典(Python3.5及以上版本)

1
2
3
4
5
6
dict_1 = {'key1': 1, 'key2': 2}
dict_2 = {'key3': 3, 'key4': 4}

merged_dict = {**dict_1, **dict_2}
merged_dict
# {'key4': 4, 'key1': 1, 'key3': 3, 'key2': 2}

Trick #11

Copy a list. Bear in mind that this is a shallow copy! :(浅)拷贝一个列表

1
2
3
4
list_1 = [1, 2, 3]
list_2 = list_1[:]
list_2
# [1, 2, 3]

注意:这里是浅拷贝~

浅拷贝是将原始对象中的数据型字段拷贝到新对象中去,将引用型字段的“引用”复制到新对象中去,不把“引用的对象”复制进去,所以原始对象和新对象引用同一对象,新对象中的引用型字段发生变化会导致原始对象中的对应字段也发生变化。

上述文本引用自网络.


小技巧第二弹

1.set()函数

set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等.

1
2
3
4
5
6
7
8
9
10
>>>x = set('runoob')
>>> y = set('google')
>>> x, y
(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l'])) # 重复的被删除
>>> x & y # 交集
set(['o'])
>>> x | y # 并集
set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])
>>> x - y # 差集
set(['r', 'b', 'u', 'n'])

上述代码引用自菜鸟教程

2.利用匿名函数对元素为字典的列表进行排序

1
2
3
4
5
info = [
{'age':16},
{'age':15},
{'age':17}
]

对info进行按age排序:

1
info.sort(key = lambda x:x['age'])

3.使用enumerate()函数同时打印列表元素及其下标

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

语法: enumerate(sequence, [start=0])

参数:

  • sequence – 一个序列、迭代器或其他支持迭代对象。
  • start – 下标起始位置。
1
2
3
4
5
6
7
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
print i, element

>>> 0 one
>>> 1 two
>>> 2 three

同时也可以使用list()函数将其返回对象转换为元组列表:

1
2
3
list(enumerate(['a', 'b']))

>>>[(0, 'a'), (1, 'b')]
喜欢的可以对我小额打赏哦,鼓励小编推出更多优质内容~

本文标题:Python中的实用小技巧

文章作者:Keithx的博客~

发布时间:2018年10月08日 - 20:10

最后更新:2018年10月22日 - 19:10

原始链接:http://edmath.cn/Python-2018-10-08-Python中的实用小技巧.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%
;