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

Python 第二十三节 常用练习问题(二)

Python 中 案例分析练习

1、 将列表中元素进行拼接

def join_list_elements(input_list, separator):# 使用 join() 方法将列表元素拼接成字符串  # 这里 join() 方法 跟 JavaScript 中的 join() 方法 类似,但是 语法不同return separator.join(input_list)
my_list = ['Andy', 'age', '18', 'is', 'a', 'student']print('==拼接结果==', join_list_elements(my_list, ' '))  # 使用空格作为分隔符
print('==拼接结果==', join_list_elements(my_list, '-'))  # 使用连字符作为分隔符

2、删除列表中的重复元素

list1 = [2,1, 2, 3, 2, 4, 5, 1, 6, 3]
# 方法一:使用集合 set() 去重
# 会破坏原来的元素顺序,内置自动排序
def remove_repetitions(input_list):# 使用集合去重,然后转换回列表return list(set(input_list))# 方法二:使用循环和条件判断去重
# 保持原来元素的顺序
def remove_repetitions_loop(input_list):result = []for itm in input_list:if itm not in result:result.append(itm)return resultprint('==set去重--', remove_repetitions(list1))
print('==循环去重--', remove_repetitions_loop(list1))

3、数字列表元素的平方

# 方法一:使用推导式
def square_list(input_list):return [x**2 for x in input_list]
# 方法二:使用 map() 函数# 这里使用了 内置函数 map(),结合 lambda:匿名函数 表达式 来实现
def square_list_map(input_list):return list(map(lambda x: x**2, input_list))

4、判断两个字符是否为 变位词anagram

 # 变位词:指由相同字母组成,但排列顺序不同的单词# 不区分大小写,忽略空格,排序之后 对比 两个字符串是否 相等
def are_anagrams(str1,str2):# 不区分大小写str1 = str1.lower().replace(" ", "")str2 = str2.lower().replace(" ", "")return sorted(str1) == sorted(str2)print('==变位词--', are_anagrams("Listen", "Silent"))  # True
print('==变位词=', are_anagrams("Andy", "dyna"))  # True
print('==变位词=', are_anagrams("Hello", "World"))  # False

4.1、判断两个字符串是否由相同字符组成,不考虑字符顺序,但是需要考虑出现频率,大小写相同

def have_same_characters(str1, str2):from collections import Counterreturn Counter(str1) == Counter(str2)
print('==相同字符及频率--', have_same_characters("aabbcc", "abcabc"))  # True
print('==相同字符及频率--', have_same_characters("aabbcc", "abccba"))  # True
print('==相同字符及频率--', have_same_characters("aabbcc", "aabbc"))   # False# 方法二:手动实现字符频率统计
def have_same_characters_manual(str1, str2):# 先去除空格,再进行排序return sorted(str1.replace(" ", "")) == sorted(str2.replace(" ", ""))

5、判断一个数字 是否在列表中

def is_number_in_list(number, input_list):# 使用 in 关键字进行判断return number in input_list
list3 = [10, 20, 30, 40, 50]
print('==数字是否在列表中--', is_number_in_list(3, list3))  # False

6、找出字符首次及最后一次出现的位置

def find_first_last_occerrnce(s, char):first_index = s.find(char)  # 首次出现位置last_index = s.rfind(char)  # 最后一次出现位置print(f"字符 '{char}' 首次出现位置: {first_index}, 最后一次出现位置: {last_index}")return first_index, last_index
find_first_last_occerrnce("abracadabra", "a")  # 输出: 字符 'a' 首次出现位置: 0, 最后一次出现位置: 10print('------------------分割线------------------')
print('--切片-', [1,2,3,4,5][:])  # 切片 示例
print('--切2片-', [1,2,3,4,5][::-1])  # 切片 示例

7、统计两个字符串中最长的公共子串

 # 方法一:动态规划
def longest_common_substring(str1, str2):m = len(str1)n = len(str2)# 创建一个二维数组来存储子串长度dp = [[0] * (n + 1) for _ in range(m + 1)]print('==dp--', dp)longest_length = 0ending_index = 0print('==m,n--', m, n)print('=range(1, m + 1)--', f'{list(range(1, m + 1))}')for i in range(1, m + 1):for j in range(1, n + 1):if str1[i - 1] == str2[j - 1]:dp[i][j] = dp[i - 1][j - 1] + 1print('==dp[i][j]--',i,j, dp[i][j])if dp[i][j] > longest_length:longest_length = dp[i][j]ending_index = ielse:dp[i][j] = 0# 提取最长公共子串result = str1[ending_index - longest_length: ending_index]print(f"最长公共子串是: '{result}',长度为: {longest_length}")return result
print('==最长公共子串--', longest_common_substring("abcdefi", "zcdemf"))  # 输出: 'cde'# 方法二:暴力法
def longest_common_substring(str1, str2):max_len = 0result = ""# 遍历str1的所有起始位置for i in range(len(str1)):# 遍历子串长度for j in range(i + 1, len(str1) + 1):substr = str1[i:j]# 检查子串是否在str2中,且长度大于当前最大值if substr in str2 and len(substr) > max_len:max_len = len(substr)result = substrreturn result
print('==最长公共子串--', longest_common_substring("abcdefi", "zcdemf"))  # 输出: 'cde'

8、统计字典中键的数量

def count_dict_keys(input_dict):return len(input_dict.keys())
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
print('==字典键数量--', count_dict_keys(my_dict))  # 输出: 4
# print('==字典键数量--', len(my_dict))  # 直接使用 len() 也可以统计键的数量

9、将字符串分割成多个子字符串,可以指定分割次数,以及分割符号

 # 默认情况下,分割次数 -1 ,表示可以分割任意多次
def split_string(input_string, separator, max_splits=-1):return input_string.split(separator, max_splits)
my_string = "apple,banana,cherry,date"
print('==分割字符串--', split_string(my_string, ",", 2))  # 指定分割两次 ['apple', 'banana', 'cherry,date']
print('==分割字符串--', split_string(my_string, ","))  # 默认分割任意多次   ['apple', 'banana', 'cherry', 'date']

10、或者列表中出现唯一的元素

  # 方法一:使用循环和 count() 方法
def find_unique_elements(input_list):unique_elements = []for item in input_list:# 使用 count() 方法 判断元素出现的次数if input_list.count(item) == 1:# 如果只出现一次,则添加到结果列表中unique_elements.append(item)return unique_elements
my_list2 = [1, 2, 2, 3, 4, 4, 5, 6, 6]
print('==唯一元素--', find_unique_elements(my_list2))  # 输出: [1, 3, 5]# 方法二:使用集合 和 列表推导式
def find_unique_elements_set(input_list):# 使用集合 和 列表推导式 来实现return [item for item in set(input_list) if input_list.count(item) == 1]# 方法三:使用字典 来实现
def find_unique_elements_dict(input_list):# 使用字典 来实现frequency = {}for item in input_list:# 使用 字典 get() 方法统计,如果出现了就去出现的次数加 1;如果没有出现就取默认值0 加 1;frequency[item] = frequency.get(item, 0) + 1# 利用推导式 来提取 只出现一次的元素return [item for item, count in frequency.items() if count == 1]# my_dict = {}# for item in input_list:#     my_dict[item] = my_dict.get(item, 0) + 1#     [item for item, count in my_dict.items() if count == 1]

11、将字典按键或值进行排序

    # 按键排序
def sort_dict_by_key(input_dict):return dict(sorted(input_dict.items()))# 按值排序      
def sort_dict_by_value(input_dict):return dict(sorted(input_dict.items(), key=lambda item: item[1]))       
my_dict2 = {'b': 2, 'a': 3, 'c': 1}# print('==按值排序--', dict(sorted(my_dict2.items())))    # 输出: {'a': 3, 'b': 2, 'c': 1}
# print('==按值22排序--', sorted(my_dict2.values()))    
print('==按键2排序--', sorted(my_dict2.items()))    
print('==按值999排序--', sort_dict_by_value(my_dict2))    

12、将字典的键或值转换为列表

  # 字典内置方法 keys() 和 values() 分别返回 字典的键视图 和 值视图
def dict_keys_to_list(input_dict):return list(input_dict.keys())
def dict_values_to_list(input_dict):return list(input_dict.values()) 

13、判断列表是否为空

def is_list_empty(input_list):return len(input_list) == 0# 或者 直接使用 not 关键字# return not input_list
my_list3 = []
print('==列表是否为空--', is_list_empty(my_list3))  # 输出: True

14、根据列表中元素长度进行排序

    # 使用 sorted() 函数 和 key 参数 来实现# 使用 sorted() 函数进行迭代,不会修改原列表
def sort_list_by_length(input_list):return sorted(input_list, key=len)# 如果需要修改原列表,可以使用 list.sort() 方法# input_list.sort(key=len)
my_list4 = ['apple', 'banana', 'kiwi', 'cherry', 'blueberry']
print('==按长度排序--', sort_list_by_length(my_list4))  # 输出
http://www.dtcms.com/a/525590.html

相关文章:

  • 基于STM32的多圈绝对值编码器的调试
  • asp.net 登陆两个网站快应用 小程序
  • 虚幻引擎5 GAS开发俯视角RPG游戏 P06-19 打开属性菜单
  • 提供医疗网站建设wordpress不能编辑不能新建
  • 网站服务费怎么做分录设计师家园官网
  • Node.js MVC 架构完全指南:构建可维护的现代 Web 应用
  • 外贸企业网站制作公司郑州区块链数字钱包网站开发公司
  • 音乐网站开发文档网站开发与app开发原理
  • django 开放api 做网站微信系统平台开发
  • 网站建设质量体系审核指导微商城网站建设平台合同范本
  • 数据库分类详解
  • 庄河网站怎么举报做棺材一个网站做三个关键词
  • 第 2 篇:SSM 核心概念与源码剖析:状态、事件与转换的底层逻辑
  • Spring Task 核心解析:从原理到源码的简洁逻辑链
  • 网站开发与应用论文营销网站的建立
  • 在哪个网站做整形莆田网站关键词优化
  • 大连网站建设介绍武冈企业建站
  • 网站漂浮特效wordpress浮动小人插件
  • remember()、rememberSaveable()和rememberSaveableStateHolder()
  • 【Java】PageHelper 分页 数据重复问题
  • 网站做全局搜索wordpress怎么更换系统文件
  • 可以做国外购物的网站有哪些阿里巴巴网站建设的不足之处
  • 网站seo诊断技巧哪个网站可以找做软件兼职的
  • 赣州销售网站wordpress电视主题
  • kafka组件traceId增强
  • 【流程引擎】与【规则引擎】
  • 商业网站排名深圳市住房和建设保障局
  • PSG(巴黎圣日耳曼)技术文章大纲
  • wecenter wordpressseowhy是什么意思中文
  • 微店常用API:获取商品详情接口|关键字搜索商品接口|获取快递费接口-打通商品运营与用户体验的技术桥梁