Python 中 案例分析练习
1、 将列表中元素进行拼接
def join_list_elements(input_list, separator):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]
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]
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"))
print('==变位词=', are_anagrams("Andy", "dyna"))
print('==变位词=', are_anagrams("Hello", "World"))
4.1、判断两个字符串是否由相同字符组成,不考虑字符顺序,但是需要考虑出现频率,大小写相同
def have_same_characters(str1, str2):from collections import Counterreturn Counter(str1) == Counter(str2)
print('==相同字符及频率--', have_same_characters("aabbcc", "abcabc"))
print('==相同字符及频率--', have_same_characters("aabbcc", "abccba"))
print('==相同字符及频率--', have_same_characters("aabbcc", "aabbc"))
def have_same_characters_manual(str1, str2):return sorted(str1.replace(" ", "")) == sorted(str2.replace(" ", ""))
5、判断一个数字 是否在列表中
def is_number_in_list(number, input_list):return number in input_list
list3 = [10, 20, 30, 40, 50]
print('==数字是否在列表中--', is_number_in_list(3, list3))
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") print('------------------分割线------------------')
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] = 0result = str1[ending_index - longest_length: ending_index]print(f"最长公共子串是: '{result}',长度为: {longest_length}")return result
print('==最长公共子串--', longest_common_substring("abcdefi", "zcdemf"))
def longest_common_substring(str1, str2):max_len = 0result = ""for i in range(len(str1)):for j in range(i + 1, len(str1) + 1):substr = str1[i:j]if substr in str2 and len(substr) > max_len:max_len = len(substr)result = substrreturn result
print('==最长公共子串--', longest_common_substring("abcdefi", "zcdemf"))
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))
9、将字符串分割成多个子字符串,可以指定分割次数,以及分割符号
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))
print('==分割字符串--', split_string(my_string, ","))
10、或者列表中出现唯一的元素
def find_unique_elements(input_list):unique_elements = []for item in input_list: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))
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:frequency[item] = frequency.get(item, 0) + 1return [item for item, count in frequency.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('==按键2排序--', sorted(my_dict2.items()))
print('==按值999排序--', sort_dict_by_value(my_dict2))
12、将字典的键或值转换为列表
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
my_list3 = []
print('==列表是否为空--', is_list_empty(my_list3))
14、根据列表中元素长度进行排序
def sort_list_by_length(input_list):return sorted(input_list, key=len)
my_list4 = ['apple', 'banana', 'kiwi', 'cherry', 'blueberry']
print('==按长度排序--', sort_list_by_length(my_list4))