python字符串去重反转_十个Python小技巧总结

1. 检查Python的最低版本的方法

你可以在代码中检查Python的版本,以确保别人正常运行你的代码。

import sys

if not sys.version_info > (2, 7):

# berate your user for running a 10 year

# python version

elif not sys.version_info >= (3, 5):

# Kindly tell your user (s)he needs to upgrade

# because you're using 3.5 features

2. 检查对象的内存使用情况

直接使用sys.getsizeof函数

import sys

mylist = range(0, 10000)

print(sys.getsizeof(mylist))

# 48

为什么是48bytes,这是因为range函数返回的是一个类,用起来像是列表,但是比列表更加高效的利用内存。

可以使用列表展开式来比较内存使用情况

import sys

myreallist = [x for x in range(0, 10000)]

print(sys.getsizeof(myreallist))

# 87632

3. 使用数据类

自从Python3.7以后,提供了数据类data classes.相比普通类有更多的优点。

1. 最少的代码量

2. 默认实现了__eq__和__repr__接口,可以直接比较数据大小和打印数据

3. 要求类型标注,降低了代码bug的可能性。

from dataclasses import dataclass

@dataclass

class Card:

rank: str

suit: str

card = Card("Q", "hearts")

print(card == card)

# True

print(card.rank)

# 'Q'

print(card)

Card(rank='Q', suit='hearts')

实现数据不可改变的数据类

from dataclasses import dataclass

@dataclass(frozen=True)

class Position:

name: str

lon: float = 0.0

lat: float = 0.0

pos = Position('Oslo', 10.8, 59.9)

print(pos.name)

pos.name = "Stockholm" # IDE直接会提示报错

# Traceback (most recent call last):

# File "/Users/vincent/Documents/pyhome/demo2.py", line 14, in

# pos.name = "Stockholm"

# File "", line 3, in __setattr__

# dataclasses.FrozenInstanceError: cannot assign to field 'name'

详细更多使用可以参考这里

4. 交换变量

有一次面试的时候碰到了这个问题。“如何在不引入第三个变量的情况下,交换两个变量的值”。别的语言可能优点麻烦,但是对Python是在太友好了。

a = 1

b = 2

a, b = b, a

print (a)

# 2

print (b)

# 1

5. 合并字典数据

自从Python3.5合并字典就非常的容易了。

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

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

merged = { **dict1, **dict2 }

print (merged)

# {'a': 1, 'b': 3, 'c': 4}

如果碰到重复的key,之前的key对用的值将会被覆盖。

6. Emoji的使用

安装emoji包

pip3 install emoji

import emoji

result = emoji.emojize('Python is :thumbs_up:')

print(result)

# 'Python is '

# You can also reverse this:

result = emoji.demojize('Python is ')

print(result)

# 'Python is :thumbs_up:'

7. 反转字符串和列表

你可以利用切片访问的方式,实现反转字符串和列表,只要将步长设为-1即可。

revstring = "abcdefg"[::-1]

print(revstring)

# 'gfedcba'

revarray = [1, 2, 3, 4, 5][::-1]

print(revarray)

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

8. 从列表或字符串中获取唯一元素(元素去重)

通过set函数创建一个set集合,就能实现元素去重。

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

print (set(mylist))

# {1, 2, 3, 4, 5, 6}

# And since a string can be treated like a

# list of letters, you can also get the

# unique letters from a string this way:

print (set("aaabbbcccdddeeefff"))

# {'a', 'b', 'c', 'd', 'e', 'f'}

9. 找到出现次数最多的元素值

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

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

# 5set(test)返回去重以后的元素值

max函数获取最大值,比较的key是元素出现的次数

最终统计出set(test)中出现次数最多的元素值

10. 创建进度条

可以使用progress包快速创建进度条

pip3 install progress

from progress.bar import Bar

import time

bar = Bar('Processing', max=20)

for i in range(20):

# Do some work

time.sleep(0.2)

bar.next()

bar.finish()

参考文章

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值