当前位置: 首页 > news >正文

常见python 排序

Python 内置排序方法

1. sorted() 函数

python

numbers = [64, 34, 25, 12, 22, 11, 90]# 返回新的排序后的列表,原列表不变
sorted_numbers = sorted(numbers)
print("原列表:", numbers)  # [64, 34, 25, 12, 22, 11, 90]
print("排序后:", sorted_numbers)  # [11, 12, 22, 25, 34, 64, 90]

2. list.sort() 方法

python

numbers = [64, 34, 25, 12, 22, 11, 90]# 原地排序,直接修改原列表
numbers.sort()
print("排序后:", numbers)  # [11, 12, 22, 25, 34, 64, 90]

3. 降序排序

python

numbers = [64, 34, 25, 12, 22, 11, 90]# 降序排序
sorted_desc = sorted(numbers, reverse=True)
numbers.sort(reverse=True)print("降序:", sorted_desc)  # [90, 64, 34, 25, 22, 12, 11]

从一个数组中找出前4个最大的数

def top_4_sorted(arr):"""使用排序方法找出前4个最大的数 使用内置函数(最简单)不高效"""# 降序排序后取前4个return sorted(arr, reverse=True)[:4]# 测试
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
result = top_4_sorted(numbers)
print(f"数组: {numbers}")
print(f"前4个最大的数: {result}")

4. 复杂排序

python

# 按字符串长度排序
words = ["apple", "hi", "banana", "a"]
sorted_words = sorted(words, key=len)
print("按长度排序:", sorted_words)  # ['a', 'hi', 'apple', 'banana']
# 按自定义规则排序
students = [("Alice", 85), ("Bob", 92), ("Charlie", 78)]
sorted_students = sorted(students, key=lambda x: x[1], reverse=True)
print("按分数排序:", sorted_students)  # [('Bob', 92), ('Alice', 85), ('Charlie', 78)]

1~9999数列中数字3出现的次数

暴力枚举:

def count_digit_3_brute_force(n):"""暴力枚举法统计1~n中数字3出现的次数"""count = 0for i in range(1, n + 1):# 将数字转为字符串,统计'3'出现的次数count += str(i).count('3')return count# 计算1~9999中数字3出现的次数
result = count_digit_3_brute_force(9999)
print(f"暴力枚举: 1~9999中数字3出现了 {result} 次")

迭代递推

def count_digit_3_iterative(n):"""迭代递推方法,最容易理解"""count = 0factor = 1  # 位数因子:1(个位), 10(十位), 100(百位)...while factor <= n:# 当前位的高位和低位higher = n // (factor * 10)lower = n % factorcurrent_digit = (n // factor) % 10# 根据当前位的值计算3的出现次数if current_digit < 3:count += higher * factorelif current_digit == 3:count += higher * factor + lower + 1else:  # current_digit > 3count += (higher + 1) * factorfactor *= 10return count# 测试
result = count_digit_3_iterative(9999)
print(f"迭代递推: 1~9999中数字3出现了 {result} 次")

删除字符串a中包含的字符串b。

a = "asdw"
b = "sd"# 方法1:使用replace(推荐)
def remove_substring_simple(a, b):return a.replace(b, '')

删除字符串a中出现在字符串b里的所有字符

def remove_chars_loop(a, b):"""使用循环删除出现在b中的字符"""result = []for char in a:if char not in b:result.append(char)return ''.join(result)# 测试
a = "wbdc"
b = "wc"
result = remove_chars_loop(a, b)
print(f"'{a}' 删除出现在 '{b}' 中的字符 -> '{result}'")

python字符串和int类型的互相转换

num_str = "123"
num_int = int(num_str)num_int = 123
num_str = str(num_int)

格式化

1. % 格式化(传统方法)

# 基本用法
name = "Alice"
age = 25
print("姓名: %s, 年龄: %d" % (name, age))  # 姓名: Alice, 年龄: 25# 常用格式符
print("整数: %d" % 42)           # 整数: 42
print("浮点数: %.2f" % 3.14159)  # 浮点数: 3.14
print("字符串: %s" % "hello")    # 字符串: hello
print("八进制: %o" % 10)         # 八进制: 12
print("十六进制: %x" % 255)      # 十六进制: ff# 宽度和对齐
print("右对齐: %10s" % "hello")   # 右对齐:      hello
print("左对齐: %-10s" % "hello")  # 左对齐: hello     
print("前导零: %05d" % 42)        # 前导零: 00042

str.format() 方法(Python 2.6+)

# 基本用法
name = "Bob"
age = 30
print("姓名: {}, 年龄: {}".format(name, age))  # 姓名: Bob, 年龄: 30# 位置参数
print("{0} {1} {0}".format("hello", "world"))  # hello world hello# 关键字参数
print("姓名: {name}, 年龄: {age}".format(name="Charlie", age=35))# 数字格式化
print("小数: {:.2f}".format(3.14159))        # 小数: 3.14
print("百分比: {:.1%}".format(0.85))         # 百分比: 85.0%
print("科学计数: {:.2e}".format(1234567))    # 科学计数: 1.23e+06# 对齐和填充
print("居中: {:^10}".format("hello"))        # 居中:   hello   
print("右对齐: {:>10}".format("hello"))      # 右对齐:      hello
print("左对齐: {:<10}".format("hello"))      # 左对齐: hello     
print("填充: {:*^10}".format("hello"))       # 填充: **hello***# 数字格式
print("千分位: {:,}".format(1234567))        # 千分位: 1,234,567
print("二进制: {:b}".format(10))             # 二进制: 1010
print("十六进制: {:x}".format(255))          # 十六进制: ff

3. f-string(Python 3.6+,推荐)

# 基本用法
name = "David"
age = 28
print(f"姓名: {name}, 年龄: {age}")  # 姓名: David, 年龄: 28# 表达式计算
a, b = 5, 3
print(f"{a} + {b} = {a + b}")      # 5 + 3 = 8
print(f"{a} * {b} = {a * b}")      # 5 * 3 = 15# 方法调用
text = "hello world"
print(f"大写: {text.upper()}")      # 大写: HELLO WORLD
print(f"长度: {len(text)}")         # 长度: 11# 数字格式化
pi = 3.1415926
print(f"圆周率: {pi:.2f}")          # 圆周率: 3.14
print(f"百分比: {0.85:.1%}")        # 百分比: 85.0%
print(f"科学计数: {1234567:.2e}")   # 科学计数: 1.23e+06# 对齐和填充
print(f"居中: {'hello':^10}")       # 居中:   hello   
print(f"右对齐: {'hello':>10}")     # 右对齐:      hello
print(f"左对齐: {'hello':<10}")     # 左对齐: hello     
print(f"填充: {'hello':*^10}")      # 填充: **hello***# 数字格式
number = 1234567
print(f"千分位: {number:,}")        # 千分位: 1,234,567
print(f"二进制: {10:b}")            # 二进制: 1010
print(f"十六进制: {255:x}")         # 十六进制: ff# 日期格式化
from datetime import datetime
now = datetime.now()

给定一个数组nums,和一个目标值target, 找出数组中,和为target的那两个整数,返回他们的数组下标。

方法1:暴力枚举(最简单)

def two_sum_brute_force(nums, target):"""暴力枚举法时间复杂度: O(n²)空间复杂度: O(1)"""n = len(nums)for i in range(n):for j in range(i + 1, n):if nums[i] + nums[j] == target:return [i, j]return []# 测试
nums = [2, 7, 11, 15]
target = 9
result = two_sum_brute_force(nums, target)
print(f"nums = {nums}, target = {target}")
print(f"结果: {result}")  # [0, 1]

有一个数组,有一个指定的目标值,获取这个目标值在这个数组中的下标

方法1:使用 index() 方法(最简单)

def find_index_simple(arr, target):"""使用index方法查找目标值的下标如果找不到会抛出ValueError"""try:return arr.index(target)except ValueError:return -1  # 返回-1表示未找到# 测试
arr = [10, 20, 30, 40, 50]
target = 30
result = find_index_simple(arr, target)
print(f"数组: {arr}")
print(f"目标值: {target}")
print(f"下标: {result}")  # 2

方法2:遍历查找

def find_index_loop(arr, target):"""使用循环遍历查找"""for i, value in enumerate(arr):if value == target:return ireturn -1  # 未找到# 测试
arr = [10, 20, 30, 40, 50]
target = 40
result = find_index_loop(arr, target)
print(f"数组: {arr}")
print(f"目标值: {target}")
print(f"下标: {result}")  # 3

http://www.dtcms.com/a/461703.html

相关文章:

  • windows安装claude踩到的坑
  • 专业外贸网站建设公司价格深圳谷歌seo推广
  • 为什么需求文档总是不完整,有哪些解法
  • 88-python电网可视化项目-8-2
  • 计算机专业可考证书汇总及建议
  • 爱站网是干嘛的网站建设中 页面
  • 【agent】AI 数字人构建2:MDM与MNN
  • 配电安全“隐形哨兵”上线!RCMX-ONE剩余电流监视器,守护每一度电的安心
  • 视频封面制作网站wordpress怎么考别人的
  • 专做眼镜的网站临城网络营销怎么做
  • Oracle VirtualBox异常关闭后无法启动解决办法
  • 微信小程序开发从零基础到项目发布的全流程实战教程(五)
  • 边缘计算双雄:CDN与PCDN
  • LeetCode 面试经典 150_哈希表_存在重复元素 II(46_219_C++_简单)
  • 网站2个页面做首页广元 网站建设
  • HTML应用指南:利用POST请求获取全国中信银行网点位置信息
  • 加油站小程序上线即闲置?3 大核心功能 + 运营落地策略
  • 做淘宝客导购网站宁夏百度公司
  • 使用 Flask 实现本机 PyTorch 模型部署:从服务端搭建到客户端调用
  • sql题目练习——多表查询
  • c 做网站加载多个图片网站开发实战第二章
  • 精通C语言(3. 自定义类型:联合体和枚举)
  • 认知事物的三个层次
  • 做数学题目在哪个网站好设计好的装修公司
  • 09.Linux环境变量
  • 11、规划过程组(4):风险
  • HT8698 立体声 D 类音频功率放大器:性能参数介绍
  • 做亚克力在那个网站上好上海建工一建集团有限公司
  • DOM与BOM核心用法解析
  • 如何在网站上做跳转代码最好的科技资讯网站