Python的一些函数示例

一、replace()

# 用于字符串内容替换与变更
# 用法参考如下示例

data = "hello word !"

# 入参为要修改的目标值,新的目标值
new_data = data.replace("word","张三")

>>>print(new_data)
>>>hello 张三 !

二、strip()

# 可以自动删除字符串前后两侧的空格与特殊符号,例如制表符/t /n等
# 用法参考如下示例

data = "  my name is zhang san  "
>>>print(data)
>>>  my name is zhang san  # 空格存在

data = "  my name is zhang san  "
new_data = data.strip()
>>>print(new_data)
>>>my name is zhangsan # 空格消失

# 可用于经典案例中
# 例如:
账户登录
username = "admin"
password = "123"

客户输入:
	username= "admin " # 此处客户异常操作输入一个结尾空格
    password= "123 "

客户截图:
	username="admin"
	password="123"
	客户提问:
		为什么账户密码都对,但我登录不上去?你系统有问题吧
	实际:
		客户登录时账户后面有空格但是截图时并不会显示隐性空格
		在进行账户参数判断时就会出错
		使用该方法:strip() 可避免该类问题

三、str.find()

# 字符串查找功能,返回结果索引值
# 不存在返回-1
# 与index的区别是index在找不到时会抛出异常ValueError:substring not find 
# 而find在找不到时会输出-1
# 想比较in进行判断,find更适合指定查找内容

data  = "你好啊,我叫赛利亚"
find_data = data.find("赛利亚")
>>> print(find_data)
>>> 6

find_data = data.find("凯丽")
>>> print(find_data)
>>> -1

四、split() 与 join()

# split字符串分割
# join拼接

data = "python_c_javascript_html_js_css"
new_data = split('_')
>>>print(new_data)
>>>['python', 'c', 'javascript', 'html', 'js', 'css']

data = ['python', 'c', 'javascript', 'html', 'js', 'css']
new_data = "_".join(data) # 下划线可以自定义其他拼接符
>>>print(new_data)
>>>"python_c_javascript_html_js_css"

五、startswith

# 匹配字符串头部第一位
str_info = "马大志"
if str_info.startswith('马') # 是否姓马
	print('true')
else:
	print('false') 

六、lis.insert() and lis.exted()

# 历史表的插入与合并
# 可用其他方法代替
# 例如插入 lis1[0] = '-1'

lis1 = [1,2,3]
lis2 = [4,5,6]
lis1.insert(0,'-1')
print(lis1)
>>>['-1', 1, 2, 3]
lis1.extend(lis2)
print(lis2)
>>>['-1', 1, 2, 3, 4, 5, 6]

七、lis.sort()

# 列表排序
# sort() 升序排序
# sort(reverse=True) 降序排序
lis = [1,3,5,8,6,7,2,4]
lis.sort()
print(lis)
>>>[1, 2, 3, 4, 5, 6, 7, 8]
lis.sort(reverse=True)
print(lis)
>>>[8, 7, 6, 5, 4, 3, 2, 1]

七、list循环删除

# 问:
lis = ["张三", "张四", "王五", "赵刚", "李云龙"]
# 如何把lis内姓张的人名删除

for name in lis:
	if name.startswith("张"):
		lis.remove(name)
print(lis)
>>>['张四', '王五', '赵刚', '李云龙']
# 张四没有被删除,原因:索引跳跃
# 其他方法:倒序删除 新列表统一删除
# 倒序删除
for name in reversed(lis):
	if name.startswith("张"):
		lis.remove(name)
>>>['王五', '赵刚', '李云龙']
#这里倒序删除,重点提示,倒序索引
#循环的索引也是倒序,lis的长度变化不会影响索引
#如果是从前往后删除,那么lis的长度变化就会影响索引
# 例如从前往后 第一次循环索引为0
# 那么删除的是张三,lis长度缩减,此时lis的第1位变成了王五
# 循环第二次索引为1 lis的第一位就变成了王五,张四被跳过了,因为lis向前缩减了
# 如果是倒序索引递减 第一次循环索引会是4(李云龙) 
# 李云龙删与不删 lis的长度变与不变 都不会影响第二次循环的索引为3
# 重点:倒序删除时索引递减,从大到小,lis长度变化不会影响索引指向

# 另一个方法 新建列表统一删除
to_remove = [name for name in lis if name.startswith("张")]
for name in to_remove:
	lis.remove(name)

# 这种方法较为安全,缺点是多循环一次与新建list

# 还有另一种方法
names = ["张三", "张伟", "李四", "张丽", "王五"]
i = 0
while i < len(names):
    if names[i].startswith("张"):
        names.pop(i)  # 删除当前元素,索引不递增
    else:
        i += 1  # 只有不删除时才递增索引
print(names)
# 使用while循环,手动控制索引新增,只有不删除时才递增索引 
# 这样即使正向删除也不会受到lis的长度变化导致索引指向问题

# 最佳方法,如果不需要保存原列表
names = ["张三", "张伟", "李四", "张丽", "王五"]
names = [name for name in names if not name.startswith("张")]
print(names)  # 输出:['李四', '王五']


# 提示:dict的循环删除也有该问题,并且更严重,会报错。
# 可以使用新字典存储删除对象在进行删除,
# 大白话就是一边循环对象一边删除对象内容
# 可以循环准备删除对象的容器,在对原容器进行统一删除
# 可以循环对原容器进行删除,但是不能一边循环原容器一边删除

八、set集合的pop

set集合的pop()方法随机删除一个值,不接受索引!

九、list列表去重

# 推荐set 和 dict.fromkeys
# set
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set(original_list))
print(unique_list)  # 输出顺序可能变化,如 [1, 2, 3, 4, 5]

# dict.fromkeys
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(dict.fromkeys(original_list))
print(unique_list)  # 输出 [1, 2, 3, 4, 5],保持原顺序

# 这两种方法在大列表的速度上最优,要保持循序可以使用dict.fromkeys

十、dict的查询 [] or get

dic = {"1":2}
print(dic['1'])
print(dic.get('1'))
# 以上两种方法都可以
# 注意第一种方法如果没有key会抛出异常
# 第二种方法如果没有key会返回None
# 适用层面不一样 自由取舍
# 第一种方法可以用try捕获。第二种方法可以用if捕获

# !!!for循环进行遍历dict时拿到只有key

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值