Python的逆天小技巧(四)

55 篇文章 0 订阅
34 篇文章 0 订阅
  • 将可变转换为不可变
    函数 frozenset()用于将可变迭代对象转换为不可变对象。使用这个函数,我们可以冻结一个对象,而不改变它的值。
my_list = [1,2,3,4,5]
my_list = frozenset(my_list)
my_list[3]=7
print(my_list)
输出

Traceback (most recent call last):
  File "<string>", line 3, in <module>
TypeError: 'frozenset' object does not support item assignment

当我们在列表中应用 frozenset() 函数时,项目分配是受限的。


  • 使用 Python 进行列表理解
    列表理解(List Comprehension)是从另一个列表中创建列表的一种非常紧凑的方式。请看以下代码。第一个是使用简单迭代编写的,第二个是使用列表理解创建的。
square_list = []
for x in range(1,10):
    temp = x**2
    square_list.append(temp)
print(square_list)
输出

[1, 4, 9, 16, 25, 36, 49, 64, 81]

使用列表理解

square_list = [x**2 for x in range(1,10)]
print(square_list)
输出

[1, 4, 9, 16, 25, 36, 49, 64, 81]

  • 三元运算符中使用条件
    在大多数情况下,我们在 Python 中使用嵌套的条件结构。可以用三元运算符代替单行,而不是使用嵌套结构。语法如下所示。
语法:Statement1 if True else Statement2

age = 25
print("Eligible") if age>20 else print("Not Eligible")
输出

Eligible

  • 多次重复元素
    与字符串乘法类似,我们可以使用乘法运算符多次创建一个用元素填充的列表。
my_list = [3]
my_list = my_list*5
print(my_list)
输出

[3, 3, 3, 3, 3]

  • 创建带范围的数字序列
    函数range()对于创建数字序列很有用。它在许多代码片段中都很有用。Range 函数的语法如下:
语法:range(start, end, step)

让我们试着创建一个偶数列表。

my_list = list(range(2,20,2))
print(my_list)
输出

[2, 4, 6, 8, 10, 12, 14, 16, 18]

  • 检查两个字符串的易位构词
    如果一个字符串由另一个字符串中的字符组成,那么这两个字符串就是易位构词(Anagram)。我们可以使用来自 collections 模块的相同的 Counter 方法。.
from collections import Counter
my_string_1 = "RACECAR"
my_string_2 = "CARRACE"
if(Counter(my_string_1) == Counter(my_string_2)):
    print("Anagram")
else:
    print("Not Anagram")
输出

Anagram

  • 查找列表中所有元素的出现次数
    前面的代码将给出最频繁的值。如果需要知道列表中所有唯一元素的出现次数,那么可以使用 collections 模块。collections 是 Python 中一个非常棒的模块,它提供了很多特性。Counter 方法提供了一个包含元素和出现项对的字典。
from collections import Counter
my_list = [1,2,3,1,4,1,5,5]
print(Counter(my_list))
输出

Counter({1: 3, 5: 2, 2: 1, 3: 1, 4: 1})

  • 在列表中查找最频繁的元素
    在列表中出现次数最多的元素,那么它将是列表中最频繁的元素。下面的代码片段将帮助你从列表中获取最频繁的元素。
my_list = [1,2,3,1,1,4,2,1]
most_frequent = max(set(my_list),key=my_list.count)
print(most_frequent)
输出

1

  • 19
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初于青丝mc终于白发

老爷们,觉得好的给个打赏呗!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值