乐趣区

关于程序员:9个应知应会的单行Python代码

当咱们开始学习 Python 时,咱们通常会优先编写可能实现工作的代码,而不会关注代码的可读性以及代码的简洁性和效率。

确切来说,这是齐全没有问题的,然而有一些办法能够在不疏忽可读性的状况下缩短咱们的 Python 代码。单行 Python 代码,只有咱们可能正确的应用它们,那么咱们将可能很好的兼顾简洁和可读性!

上面任何学习 Python 的同学都应该晓得的 9 条单行代码,咱们一起来看看吧~

1. If — Else 语句

if-else 语句是咱们在 Python 中学习的第一批语句之一,它用于执行给定条件的虚实局部。

咱们常常应用这个语句,然而你晓得它能够被简化为一行代码吗?在很多状况下,咱们齐全能够把 if 和 else 语句放在在同一行中

age = 18
valid = "You're an adult"invalid ="You're NOT an adult"
print(valid) if age >= 18 else print(invalid)

2. 依据现有列表创立新列表

列表是一种罕用的数据存储形式,但你晓得只需一行代码即可基于现有列表创立新列表吗?

没错,它被称为列表推导,它提供了一种基于现有列表的值创立列表的简短语法,列表推导比用于制作列表的函数和循环更紧凑。

上面是语法

[expression for item in list]

咱们来看个例子

words = ['united states', 'brazil', 'united kingdom']

capitalized = [word.title() for word in words]
>>> capitalized
['United States', 'Brazil', 'United Kingdom']

下面的代码的确看起来更好!然而要记住,咱们应该放弃代码对用户敌对,因而不举荐在一行代码中编写很长的列表推导式。

3. 字典推导

与列表推导相似,Python 中也有字典推导。字典推导提供了一种简短的语法,能够在一行代码中创立字典。

上面是语法

{key: value for key, value in iterable}

来个栗子

dict_numbers = {x:x*x for x in range(1,6) }
>>> dict_numbers
{1: 1, 2: 4, 3: 9, 4: 16, 5:25}

4. 合并词典

有多种办法能够合并字典,咱们能够应用 update() 办法、merge() 运算符,甚至是字典推导。

然而有一种更简略的办法能够在 Python 中合并字典,就是通过应用解包运算符 **。咱们只须要在咱们心愿组合的每个字典后面增加 ** 并应用额定的字典来存储输入即可

dict_1 = {'a': 1, 'b': 2}
dict_2 = {'c': 3, 'd': 4}
merged_dict = {**dict_1, **dict_2}
>>> merged_dict
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

在咱们将 ** 运算符利用于字典后,两者都将扩大其内容并合并以创立一个新字典。

5. 删除列表中的反复项

有时咱们须要确保列表中没有任何反复值,只管没有一种办法能够轻松进行解决,但咱们能够应用 set 来打消反复项。

set是一种无序汇合,其中每个元素都是惟一的。这意味着如果咱们将列表变成一个汇合,就能够疾速删除反复项,。而后咱们只须要将汇合再次转换为列表即可。

让咱们看一个根本的例子来把握它

numbers = [1,1,1,2,2,3,4,5,6,7,7,8,9,9,9]

>>> list(set(numbers))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

6. 在一行中给多个变量赋值

每当咱们须要调配多个变量时,能够在 Python 中将它们调配在一行中,而不是逐行调配(即便是来自不同类型的变量)。

a, b, c = 1, "abc",  True
>>> a
1
>>> b
'abc'
>>> c
True

很简洁吧,然而须要留神的是,咱们调配的变量越多,将它们调配给谬误值的机会就越大,双刃剑啊~

7. 从列表中过滤值

假如咱们想从列表中过滤一些值,能够应用许多办法来做到这一点,但有一种简略的办法是应用 filter() 函数。

这是过滤器函数的语法:

filter(function, iterable)

如果咱们在过滤器函数中增加一个 lambda 函数,成果会更好!

让咱们通过从列表中过滤偶数来把握它

my_list = [10, 11, 12, 13, 14, 15]
>>> list(filter(lambda x: x%2 == 0, my_list))
[10, 12, 14]

8. 按键排序字典

对字典进行排序并不像对列表进行排序那样简略——咱们不能像应用列表那样应用 sort() 或 sorted() 对字典进行排序。

然而咱们能够将字典推导与 sorted() 函数联合起来,通过键对字典进行排序。

在上面的示例中,咱们将按产品名称对字典进行排序。

product_prices = {'Z': 9.99, 'Y': 9.99, 'X': 9.99}
>>{key:product_prices[key] for key in sorted(product_prices.keys())}
{'X': 9.99, 'Y': 9.99, 'Z': 9.99}

9. 按值排序字典

相似于按键对字典进行排序,咱们须要应用 sorted() 函数和列表推导来按值对字典进行排序,然而咱们还须要增加一个 lambda 函数。

首先让咱们看看 sorted() 函数的所有参数

sorted(iterable, key=None, reverse=False)

要按值对字典进行排序,咱们须要应用 key 参数。此参数承受一个函数,该函数用作排序比拟的键。在这里,咱们能够应用 lambda 函数使事件变得更简略。

假如咱们有一个蕴含人口值的字典,咱们想按值对其进行排序

population = {'USA':329.5, 'Brazil': 212.6, 'UK': 67.2}

>>> sorted(population.items(), key=lambda x:x[1])
[('UK', 67.2), ('Brazil', 212.6), ('USA', 329.5)]

当初惟一剩下的就是增加字典推导了

population = {'USA':329.5, 'Brazil': 212.6, 'UK': 67.2}

>>> {k:v for k, v in sorted(population.items(), key=lambda x:x[1])}
{'UK': 67.2, 'Brazil': 212.6, 'USA': 329.5}

好了,这就是明天分享的全部内容,喜爱就点个赞吧~

本文由 mdnice 多平台公布

退出移动版