天天看点

python骚操作

1.字符串的翻转

  • 使用切片的操作(简单)
  • 使用reduce函数
python骚操作
# 方法一
str1="nihao,shijie"
print(str1[::-1])

# 方法二
from functools import reduce
print(reduce(lambda x,y:y+x,str1))
           

2.判断字符串是否是回文

  • 先将字符串进行翻转操作,
  • 然后判断翻转之后的字符串与翻转之前的字符串是否一样
python骚操作
def judge_plalindrome(input_str):
    if input_str==input_str[::-1]:
        print("回文")
    else:
        print("不回文")

input_str=input("请输入待检验的字符串:\n>>> ")
judge_plalindrome(input_str)
           

3.单词大小写

  • string.title()

  • string.upper()

  • str2.lower()

  • string.capitalize()

python骚操作
str2="nihao,pyTHON"

print(str2.upper())  # 所有的字母大写
print(str2.lower())  # 所有的字母小写
print(str2.title())  # 所有的单词的首字母大写
print(str2.capitalize())  # 整个字符串的首字母大写
           

4.字符串的拆分

  • 直接利用split函数进行实现,返回的是列表
  • strip函数用于移除字符串头尾指定的字符
python骚操作
str3="nihao"
str3_1="ni/hao/python"
str3_2="   ni   hao   python   "

print(str3.split())  # split方法默认是按照空格来进行拆分,这样返回的是一个列表
print(str3_1.split("/"))  # 我们可以给split方法传入一个字符,这样的话,split方法就会按照这个字符来进行拆分这个字符串
print(str3_2.strip())  # strip方法默认去除字符串两边的空格,返回的是字符串
           

5.将列表中的字符串合并

  • join方法
python骚操作

6.字符串和列表的去重操作

  • set方法
  • 字符串:去除字符串中重复的字符,最后的结果是:每个字符都是独一无二的
  • 列表:去除字符串中重复的元素,最后的结果是:每个元素都是独一无二的
python骚操作
# 字符串的去重
str5="ni/ hao/ python/ woaini/ "
print(set(str5))
# 注意:set方法返回的是一个set类型,我们可以使用list强制类型转换将其转换为列表类型
print(list(set(str5)))

# 列表的去重
list2=[2,3,5,4,6,7,"5","6"]  # 注意:5和"5"不是同一个元素,因为他们的数据类型并不一致
print(set(list2))
print(list(set(list2)))
           

7.将元素进行重复

  • 可以采用“乘法”的形式,直接乘以原来的元素
  • 也可以采用“加法”的形式,更加方便理解
python骚操作
str6="python"
list3=[1,2,3]

# 乘法
print(str6*3)
print(list3*3)

# 加法
str6_1=""
list3_1=[]

for i in range(3):
    str6_1+=str6
    list3_1.extend(list3)

print(str6_1)
print(list3_1)
           

8.基于列表的扩展

  • 使用列表推导式
  • 将嵌套的列表进行展开
python骚操作
list4=[1,2,3,4]

# 列表推导式
list4_1=[2*x for x in list4]
print(list4_1)

# 列表的展开
list5=[[1,2,3],[4,5,6],[7,8,9]]
list5_1=[i for k in list5 for i in k]
print(list5_1)
           

9.将列表展开

  • iteration_utilities中的deepflatten函数
  • 直接采用递归的方法
python骚操作
from iteration_utilities import deepflatten

list6=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]

print(deepflatten(list6))
list6_1=list(deepflatten(list6))
print(list6_1)  # 第一种方法

# 第二种方法
list6_2=[]
for i in list6:
    list6_2.extend(i)

print(list6_2)
           

10.二值交换

  • 直接采用交换的方式
  • 借助第三个变量
python骚操作
a=1
b=2

# 方法一
a,b=b,a
print(a,b)

# 方法二
c=a
a=b
b=c
print(a,b)
           

统计了列表元素的频率

  • collection中的Counter类
  • 自己实现这样的统计
python骚操作
from collections import Counter
list7=[1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,"6","6","6","6","6","6"]

# 方法一
count=Counter(list7)  # 实例化一个Counter对象
print(count)  # 返回一个键值对类型的数据,键:元素;值:元素出现的次数
print(count[5])  # count类似于字典一样,通过键,我们可以查找这个键对应的值
print(count.most_common())  # 返回一个列表,列表中的每一个元素都是一个元组,元组的形式为:(键,值)


# 方法二
dict1={}
for i in list7:
    if i in dict1:
        dict1[i]+=1
    else:
        dict1[i]=1
print(dict1)  # 字典的形式,键:元素;值:元素出现的次数
print(max(dict1,key=lambda x:dict1[x]))  # 打印字典中值的最大值
           

12.判断字符串所含的元素是否相同

  • Counter类还可以用来判断字符串中包含的元素是否相同,无论字符串中元素顺序如何,只要包含相同的元素和数量,就认为其实相同的
  • is
  • ==
python骚操作
from collections import Counter

str7_1="123"
str7_2="123"
str7_3="456"

# 方法一
print(Counter(str7_1)==Counter(str7_2))  # 相同
print(Counter(str7_1)==Counter(str7_3))  # 不同

# 方法二
print(str7_1==str7_2)
print(str7_1==str7_3)

# 方法三
print(str7_1 is str7_2)
print(str7_1 is str7_3)
           

13.将数字字符串转换为数字列表

  • map函数可以将字符串中的每个元素都执行int函数,其返回的是一个迭代器,利用list函数来将其转化为列表的形式
  • 通过循环int实现
python骚操作
str8="123456789"

# 方法一
list7_1=list(map(int,str8))  # map(a,b)  表示对b中的每一个小的元素都执行a操作
print(list7_1)

# 方法二
list7_2=[int(i) for i in str8]
print(list7_2)
           

14.使用try-except-finally模块

python骚操作
a=1
b=2
try:
    a.append(b)
except AttributeError as e:
    print("'a'不是一个列表!")
else:
    print(a)
finally:
    print("程序结束!")
           
a=[]
b=2
try:
    a.append(b)
except AttributeError as e:
    print("'a'不是一个列表!")
else:
    print(a)
finally:
    print("程序结束!")
           

15.获取索引-数值对

  • enumerate()
  • for i in range(len())
python骚操作
list8=[1,2,3,4,5,6,7]

# 方法一
for i,j in enumerate(list8):
    print(f"{i}:{j}")

# 方法二
for i in range(len(list8)):
    print(f"{i}:{list8[i]}")
           

16.代码执行消耗时间

  • time()函数
  • 在核心程序开始前记住当前的时间点
  • 然后在程序结束后计算当前时间点和核心程序开始前的时间差
python骚操作
import time
start_time=time.time()  # 记住当前的时间点

# 代码块
num=0
for i in range(10000):
    num=i

final_time=time.time()  # 记住当前的是时间点
code_execution_time=final_time-start_time
print(f"共消耗时间:{code_execution_time}s")  # 打印消耗时间
           

17.检查对象的内存占用情况

  • sys.getsizeof

    来查看元素所占内存的大小
python骚操作
import sys
str9_1="123"
str9_2="123456789"
num1=123

print(sys.getsizeof(str9_1))
print(sys.getsizeof(str9_2))
print(sys.getsizeof(num1))
           

18.字典的合并

  • python3(新)
  • python2(旧)
python骚操作
dict1={"a":1,"b":2}
dict2={"c":1,"d":2}

# 方法一
combined_dict={**dict1,**dict2}  # 返回一个新的字典,原来的字典并没有改变
print(combined_dict)

dict1={"a":1,"b":2}
dict2={"c":1,"d":2}
# 方法二
dict1.update(dict2)  # 直接在dict1的基础之上进行修改
print(dict1)
           

19.随机采样

  • random.sample()
  • random.choice()
  • 可以从一个序列中选择随机且独立的元素
python骚操作
import random
list9=[1,2,3,4,5,6]
str10="nihao"
n=3

# 方法一
print(random.sample(list9,n))
print(random.sample(str10,n))

# 方法二
print(random.choice(list9))  # random.choice(a)表示从a的所有元素中随机选取一个元素
print(random.choice(str10))
           

20.检查唯一性

  • 检查列表的长度是否与set之后的列表长度一致,来判断列表中的元素是否是独一无二的
  • 假定这个元素是唯一的,将这个元素从列表中删除之后再判断这个元素是否存在于删除后的列表中
python骚操作
list10_1=[1,2,3,4,5,5,6,6,7,8]
list10_2=[1,2,3,4,5]

# 方法一
def ifunique_1(seq):
    if len(seq)==len(set(seq)):
        print("该列表中的元素都是唯一的")
    else:
        print("该列表中的元素不都是唯一的")