字符串py

目录

一.字符串对象

二.常见方法

三.切片

四.索引

五.常见的排序算法

1.冒泡排序

2.选择排序

3.插入排序

六.二分查找


一.字符串对象

'字符串'        "字符串"        '''字符串'''        """字符串"""

str()                    #全局函数,可以将一个类型转化为字符串

len(字符串)        #获取字符串的长度

while和for循环,遍历字符串

二.常见方法

'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'

| -- capitalize()           #第一个字符大写,其余字符小写

| -- center()                #居中对齐

| -- ljust()                    #左对齐

| -- rjust()                    #右对齐

| -- replace()               #替换

| -- translate()             #使用给定的翻译表替换字符串中的每个字符

| -- maketrans()          #返回str.translate()可用的翻译表(字典)

| -- count()                  #计数

| -- endswith()             #是否以指定后缀结尾,返回布尔值

| -- startswith()            #是否以指定前缀开头

| -- title()                      #将字符串每个单词的首字母大写

| -- find()                      #从左向右索引,失败时返回-1

| -- rfind()                     #从右向左索引,失败时返回-1

| -- index()                   #从左向右索引,从0开始

| -- reindex()                #从右向左索引,从0开始

| -- format()                  #配合花括号进行字符串格式化

name = 'Tom'
age = 18
print('My name is {}, and I am {} years old.'.format(name, age))

#输出结果为:
#My name is Tom, and I am 18 years old.

| -- isdecimal()             #判断字符串是否是十进制

| -- isdigit()                   #判断字符串是否是数字字符串

| -- islower()                 #判断字符串是否由小写字符串

| -- isupper()                #判断字符串是否是大写字符串

| -- istitle()                    #判断字符串是否是标题(只能使用大写和大写字符)

| -- isalnum()                #判断字符串是否由字母+数字组成

| -- isisalpha()              #判断字符串是否由字母组成

| -- isascii()                  #判断字符串中的所有字符是否都是ASCII

| -- join()                      #拼接        例:".".join (['ab', 'pq', 'rs']) -> 'ab.pq.rs'

| -- split()                     #剪切

| -- lower()                   #转小写

| -- upper()                  #转大写

| -- strip()                     #去除字符串两侧空格

| -- rstrip()                    #去除字符串右侧空格

| -- lright()                    #去除字符串左侧空格

编码相关的方法:

| -- encode                #编码,将字符串数据转化为字节数据,默认为utf-8

字节对象

| -- decode                #解码,将字节数据转化为字符串数据

三.切片

切片是编程语言为有序序列(sequence)准备的,用来切割或者截取某个片段设计的一门技术

序列[num]                        #使用下标,获取对应下标的值

序列[num:]                       #从num下标开始截取[)

序列[start:end]                 #[start:end]的区间

序列[start:end:step]         #步长

四.索引

1.正索引:从左向右读取序列,第一个值是0,第二个值是1……n

2.负索引:从右向读左取序列,第一个值是-1,第二个值是-2……-n

#判断一个字符串是否是回文
def is_pla(content):
	left = 0
	right = len(content) - 1
	while left < len(content) // 2:
		if content[left] != content[right -left]:
			return False
		left += 1
	return True


print(is_pla("上海自来水来自海上"))
print(is_pla("123456789"))

五.常见的排序算法

在开发时,为了加速查询效率(各种查询算法,如二分查找等),首选需要将数据排成有序的数据

1.冒泡排序

两两比较找大数,算法稳定

main函数:用来书写测试的代码,这些代码不会导入到其他模块中

from typing import List


def bubble_sort(nums: List):
	for i in range(len(nums) - 1):
		for j in range(len(nums) - 1 - i):
			if nums[j] > nums[j + 1]:
				nums[j], nums[j + 1] = nums[j + 1], nums[j]
	return nums


if __name__ == '__main__':
	nums = [40, 24, -2, 94, -43, -1 ,83]
	nums = bubble_sort(nums)
	print(nums)
2.选择排序

找小数,算法不稳定

from typing import List


# def select_sort(nums: List):
# 	for i in range(len(nums) - 1):
# 		#假设第一个值是最小值
# 		min = i
# 		for j in range(i + 1,len(nums)):
# 			if nums[j] < nums[min]:
# 				min = j
# 		if i != min:
# 			nums[i], nums[min] = nums[min], nums[i]

#简化版
def select_sort2(nums: List):
	for i in range(len(nums) - 1):
		for j in range(i + 1,len(nums)):
			if nums[j] < nums[i]:
				nums[i], nums[j] = nums[j], nums[i]
	return nums

	
if __name__ == "__main__":
	nums = [33, 52, 76, -3, -34]
	select_sort2(nums)
	print(nums)
3.插入排序

默认第一个值为一个有序的数列,之后依次插入后面每一个值

from typing import List


def insert_sort(nums: list):
	for i in range(len(nums) - 1):
		for j in range(i + 1, 0, -1):
			if nums[j] < nums[j - 1]:
				nums[j], nums[j - 1] = nums[j - 1],nums[j]
	return nums


if __name__ == '__main__':
	nums = [33, 41, -4, 42, 31]
	insert_sort(nums)
	print(nums)

六.二分查找

有序序列

from typing import List


def binary_search(nums: List, key: int):
	left = 0
	right = len(nums) - 1

	while left <= right:
		middle = ((right + left) >> 1)
		if key == nums[middle]:
			return middle
		elif key > nums[middle]:
			left = middle + 1
		elif key < nums[middle]:
			right = middle - 1
	return -1
#递归法
def binary_search2(nums: List, key: int, start: int, end: int):
	middle = (start + end) // 2
	if start > end:
		return -1
	if nums[middle] == key:
		return middle
	elif key > nums[middle]:
		return binary_search2(nums, key, middle + 1, end)
	elif key < nums[middle]:
		return binary_search2(nums, key, start, middle - 1)
	


if __name__ == '__main__':
	nums = [1,2,3,5,66,89]

	# print(binary_search(nums, 66)) 
	print(binary_search2(nums, 66, 0,len(nums) - 1))) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值