100道python练习题(六)

以下是第51到60题的代码示例:

  1. 编写一个函数,接受一个字符串作为输入,返回该字符串的反转版本。
def reverse_string(s):
    return s[::-1]

测试:

print(reverse_string("Hello, World!"))  # 输出:!dlroW ,olleH
  1. 编写一个函数,接受两个整数列表作为输入,返回这两个列表的元素对称差集(即在第一个列表中但不在第二个列表中的元素和在第二个列表中但不在第一个列表中的元素)。
def symmetric_difference(list1, list2):
    return list(set(list1) ^ set(list2))

测试:

print(symmetric_difference([1, 2, 3, 4], [3, 4, 5, 6]))  # 输出:[1, 2, 5, 6]
  1. 编写一个函数,接受一个字符串和一个字符作为输入,返回该字符串中所有指定字符的索引位置列表。
def find_char_indices(s, char):
    return [i for i, c in enumerate(s) if c == char]

测试:

print(find_char_indices("Hello, World!", "o"))  # 输出:[4, 7]
  1. 编写一个函数,接受一个列表和一个整数n作为输入,返回列表中长度为n的所有连续子序列。
def sub_sequences(lst, n):
    return [lst[i:i+n] for i in range(len(lst) - n + 1)]

测试:

print(sub_sequences([1, 2, 3, 4, 5], 3))  # 输出:[[1, 2, 3], [2, 3, 4], [3, 4, 5]]
  1. 编写一个函数,接受一个字典作为输入,返回一个新的字典,其中键值对的顺序按照值的降序排列。
def sort_dict_by_value(d):
    return {k: v for k, v in sorted(d.items(), key=lambda item: item[1], reverse=True)}

测试:

print(sort_dict_by_value({"a": 3, "b": 1, "c": 2}))  # 输出:{'a': 3, 'c': 2, 'b': 1}
  1. 编写一个函数,接受一个字符串和一个整数n作为输入,返回字符串中每n个字符一组的新字符串。
def group_chars(s, n):
    return ''.join([s[i:i+n] for i in range(0, len(s), n)])

测试:

print(group_chars("Hello, World!", 3))  # 输出:Hel lo, Wo rl d!
  1. 编写一个函数,接受一个列表作为输入,返回列表中唯一元素的个数。
def count_unique_elements(lst):
    return len(set(lst))

测试:

print(count_unique_elements([1, 2, 3, 2, 1, 4, 5, 4]))  # 输出:5
  1. 编写一个函数,接受一个列表和一个函数作为输入,返回新列表,其中每个元素是原列表中对应元素经过传入函数处理后的结果。
def apply_function_to_list(lst, func):
    return [func(x) for x in lst]

测试:

def square(x):
    return x ** 2
print(apply_function_to_list([1, 2, 3, 4], square))  # 输出:[1, 4, 9, 16]
  1. 编写一个函数,接受一个字符串作为输入,返回该字符串中最长的回文子串。
def longest_palindrome(s):
    def expand_around_center(left, right):
        while left >= 0 and right < len(s) and s[left] == s[right]:
            left -= 1
            right += 1
        return s[left+1:right]

    longest = ""
    for i in range(len(s)):
        palindrome_odd = expand_around_center(i, i)
        palindrome_even = expand_around_center(i, i+1)
        current_longest = max(palindrome_odd, palindrome_even, key=len)
        if len(current_longest) > len(longest):
            longest = current_longest

    return longest

测试:

print(longest_palindrome("babad"))  # 输出:'bab'
  1. 编写一个函数,接受一个列表作为输入,返回列表中第二大的元素。如果列表中没有第二大的元素,则返回None。
def second_largest(lst):
    unique_elements = set(lst)
    if len(unique_elements) < 2:
        return None
    else:
        unique_elements.remove(max(unique_elements))
        return max(unique_elements)

测试:

print(second_largest([1, 2, 3, 2, 1]))  # 输出:2
print(second_largest([1, 1, 1]))  # 输出:None

这是第51到60题的代码示例。如果还有其他问题,请继续提问!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hhb_618

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值