开拓思维的python代码段

本文介绍了Python编程中的几个实用技巧,包括检测变位词、列表分块、二维数组转换、首字母转小写、过滤错误值、递归展开列表、找出列表差异以及找到最频繁元素。这些技巧涵盖了字符串操作、列表处理和数据比较等方面,对于提升Python编程效率非常有帮助。
摘要由CSDN通过智能技术生成
变位词

检测两个字符串是否互为变位词

from collections import Counter

def anagram(first, second):
	return Counter(first) == Counter(second)
print(anagram('abcd3', '3acdb'))
# True
分块

使用range()将列表分块为指定大小的较小列表

from math import ceil

def chunk(lst, size):
	return list(map(lambda x: lst[x * size: x * size + size],
		list(range(0, ceil(len(lst) / size)))))
print(chunk([1, 2, 3, 4, 5], 2))
# [[1, 2], [3, 4], [5]]
间隔数

转换一个二维数组

array = [['a', 'b'], ['c', 'd'], ['e', 'f']]
transposed = zip(*array)
print(transposed)
# [('a', 'c', 'e'), ('b', 'd', 'f')]
首字母恢复小写

将给定字符串的第一个字母转换为小写

def decapitalize(str):
	return str[:1].lower() + str[1:]
decapitalize('FooBar')
# fooBar
filter()删除列表中错误值

如(:False, None, 0, 和’’)

def compact(lst):
	return list(filter(bool, lst))
print(compact([0, 1, False, 2, '', 3, 'a', 's', 34]))
# [1, 2, 3, 'a', 's', 34]
递归展开潜在列表
def spread(arg):
	ret = []    
	for i in arg:        
		if isinstance(i, list):            
			ret.extend(i)        
		else:            
			ret.append(i)    
	return ret 

def deep_flatten(lst):    
	result = []    
	result.extend(        
		spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst))))    
	return result 

print(deep_flatten([1, [2], [[3], 4], 5]))
# [1, 2, 3, 4, 5]
差异

两个列表进行对比,保留第一个

def difference(a, b):
	set_a = set(a)
	set_b = set(b)
	comparison = set_a.difference(set_b)
	return list(comparison)
print(difference([1, 2, 3], [1, 2, 4]))
# 3
查找出现最多的元素
def most_frequent(list):
	return max(set(list), key = list.count)

lst = [1, 2, 1, 2, 3, 2, 1, 4, 2]
print(most_frequent(lst)
# 2
变量交换
def swap(a, b):
	return b, a
a, b= -1, 14
print(swap(a, b)
# (14, -1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Vergil_Zsh

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值