-
现有字典
d = {'a': 24, 'g': 52, 'i': 12, 'k': 33}
,如何按字典中的值对字典进行排序得到排序后的字典。d = {item[0]: item[1] for item in sorted(d.items(), key=lambda x:x[1])} 或者 d = {key:value for key, value in (sorted(d.items(), key=lambda x: x[1]))}
-
实现将字符串
k1:v1|k2:v2|k3:v3
处理成字典{'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
。{key: value for key, value in ( item.split(':') for item in 'k1:v1|k2:v2|k3:v3'.split('|') )}
-
写出生成从
m
到n
公差为k
的等差数列的生成器。(value for value in range(m, n + 1, k))
或
def generate(m, n, k): for value in range(m, n + 1, k): yield value
或
def generate(m, n, k): yield from range(m, n + 1, k)
-
请写出你能想到的反转一个字符串的方式。
''.join(reversed('hello'))
或
'hello'[::-1]
或
def reverse(content): return ''.join(content[i] for i in range(len(content) - 1, -1, -1)) reverse('hello')
或
def reverse(content): return reverse(content[1:]) + content[0] if len(content) > 1 else content reverse('hello')
-
不使用任何内置函数,将字符串
'123'
转换成整数123
。nums = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9} total = 0 for ch in '123': total *= 10 total += nums[ch] print(total)
-
写一个返回bool值的函数,判断给定的非负整数是不是回文数。
def is_palindrome(num): temp = num total = 0 while temp > 0: total = total * 10 + temp % 10 temp //= 10 return total == num 解析1: num = 12345 temp = num total: 0 5 54 543 5432 54321 temp: 12345 1234 123 12 1 0 return total == num 解析2: num = 123321 temp = num total: 0 1 12 123 1233 12332 123321 temp: 12321 12332 1233 123 12 1 0
-
用一行代码实现求任意非负整数的阶乘。
from functools import reduce (lambda num: reduce(int.__mul__, range(2, num + 1), 1))(5)
或
reduce(lambda x, y: x*y, range(2, num + 1), 1)
-
写一个函数返回传入的整数列表中第二大的元素。
def max2(x): m1, m2 = (x[0], x[1]) if x[0] > x[1] else (x[1], x[0]) for index in range(2, len(x)): if x[index] > m1: m1, m2 = x[index], m1 elif x[index] > m2: m2 = x[index] return m1, m2 print(max2([2, 5, 6, 8, 21, 33]))
-
删除列表中的重复元素并保留原有的顺序。
list1 = [2, 3, 2, 12, 5, 25, 3] new_list1 = [] mid_list1 = [new_list1.append(item) for item in list1 if item not in new_list1]
或
list1 = [2, 3, 2, 12, 5, 25, 3] new_lsit1 = list(set(list1)) new_list1.sort(key=list1.index)
-
找出两个列表中的相同元素和不同元素。
list1 = [1, 2, 33, 4, 21, 6] list2 = [2, 3, 44, 5, 6, 7] 相同的元素:list(set(list1) & set(list2)) 不同的元素: list(set(list1) ^ set(list2))
-
列表中的某个元素出现次数占列表元素总数的半数以上,找出这个元素。
list1 = [1, 1, 2, 5, 6, 5, 1, 1, 1, 44, 1] result = [item for item in set(list1) if list1.count(item) > len(list1) // 2]
-
实现对有序列表进行二分查找的算法。
def binary_search(olist, num): low = 0 heigh = len(olist) - 1 while low <= heigh: mid = int((low + heigh) / 2) guess_num = olist[mid] if guess == num: return guess if guess < olist[mid]: low = mid + 1 else: heigh = mid - 1 return None def main(): olist = [1, 3, 5 ,7, 12, 23, 34, 56, 67, 78, 89, 90, 100] print(binary_search(olist, 78)) if __name__ == '__main__': main()
-
输入年月日,输出这一天是这一年的第几天。
def is_leap_year(year): return year % 4 == 0 and year % 100 != 0 or year % 400 == 0 def which_day(year, month, day): days_of_month = [[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]][is_leap_year(year)] total = 0 for index in range(month - 1): total += days_of_month[index] total += day return f'这一天是这一年的第{total}天' def main(): print(which_day(1980, 11, 28)) print(which_day(1981, 12, 31)) print(which_day(2018, 1, 1)) print(which_day(2019, 12, 24)) if __name__ == '__main__': main()
-
统计一个字符串中各个字符出现的次数。
str1 = 'hello, world' count_str = {item:str1.count(item) for item in str1}
-
在Python中如何实现单例模式?
https://www.jianshu.com/p/6a1690f0dd00
-
下面的代码会输出什么。
class A: def __init__(self, value): self.__value = value @property def value(self): return self.__value a = A(1) a.__value = 2 print(a.__value) # 2 print(a.value) # 1
-
实现一个记录函数执行时间的装饰器。
import time def runtime(func): def wrapper(*args, **kwargs): start_time = time.time() fn = func(*args, **kwargs) execute_time = time.time() - start_time return fn return wrapper
-
写一个遍历指定目录下指定后缀名的文件的函数。
import os def find_file_ext(filepath, ext): file_list = os.listdir(filepath) result = [] for item in file_list: file_ext = os.path.splitext(item)[1] if file_ext == ext: result.append(item) return result
-
有如下所示的字典,请将其转换为CSV格式。
转换前:
dict_corp = { 'cn': {'id': 1, 'name': '土豆', 'desc': '土豆', 'price': {'gold': 20, 'kcoin': 20}}, 'en': {'id': 1, 'name': 'potato', 'desc': 'potato', 'price': {'gold': 20, 'kcoin': 20}}, 'kr': {'id': 1, 'name': '감자', 'desc':'감자', 'price': {'gold': 20, 'kcoin': 20}}, 'jp': {'id': 1, 'name': 'ジャガイモ', 'desc': 'ジャガイモ', 'price': {'gold': 20, 'kcoin': 20}}, }
转换后:
,id,name,desc,gold,kcoin cn,1,土豆,土豆,20,20 en,1,potato,potato,20,20 kr,1,감자,감자,20,20 jp,1,ジャガイモ,ジャガイモ,20,20
参考链接 https://jingyan.baidu.com/article/fc07f989cd89b552fee51967.html
-
请写出从HTML页面源代码中获取a标签href属性的正则表达式。
pattern = re.complie('<a href="(.*?)"') result = re.findall(pattern, html)
Python常见编程题1
最新推荐文章于 2023-04-05 11:22:41 发布