Python中的列表算法问题如何解决?

['/N/98445.html', '/N/98439.html', '/HomeV2/Banner/Records?model=A1&name=A1&url=https%3A%2F%2Fwww.jiemodui.com%2FKe%2F97539.html%3Ffrom%3Djmd004&flag=3a6f8321cf5ca56b13fd4a40a9474246', '/N/98441.html', '/N/98436.html', '/N/98435.html', '/N/98433.html', '/N/98434.html', '/HomeV2/Banner/Records?model=A3&name=A3&url=https%3A%2F%2Fwww.jiemodui.com%2FA%2F98137%3F%3Dxxl3&flag=90e994d56cd13c6b3201012bc988873a', '/N/98432.html', '/N/98431.html', '/N/98430.html', '/N/98429.html', '/N/98427.html', '/N/98426.html', '/N/98421.html', '/N/98416.html', '/N/98420.html', '/N/98407.html', '/N/98419.html', '/N/98411.html', '/N/98406.html']

这里我想保留 /N/98445.html 类似的格式,把 很长的 /HomeV2 那两个很长的从列表中删除,我想到的办法就是遇到这个字符串 pass 然后 重新构造一个列表添加,因为可能这个带 /HomeV2 字符串不在这个位置 有没有不需要重新构造一个列表直接在原来的列表删除这两个有 /HomeV2 的长字符串


Python中的列表算法问题如何解决?

7 回复

filter(lambda x:not x.startswith("/HomeV2"), lst)


帖子标题:Python中的列表算法问题如何解决?

列表算法问题通常涉及排序、查找、去重、合并等操作。核心解决思路是:先明确问题类型,再选择合适的数据结构与算法。比如排序用 sorted().sort(),查找用线性搜索或二分查找(需先排序),去重用 set() 或字典。

示例:合并两个有序列表并去重

def merge_sorted_lists(list1, list2):
    # 合并后排序(适用于无序列表)
    merged = sorted(set(list1 + list2))
    return merged

# 如果已知列表已有序,可用双指针优化
def merge_sorted_lists_efficient(list1, list2):
    result = []
    i = j = 0
    while i < len(list1) and j < len(list2):
        if list1[i] < list2[j]:
            result.append(list1[i])
            i += 1
        elif list1[i] > list2[j]:
            result.append(list2[j])
            j += 1
        else:  # 相等时去重
            result.append(list1[i])
            i += 1
            j += 1
    # 添加剩余元素
    result.extend(list1[i:])
    result.extend(list2[j:])
    return result

# 测试
list_a = [1, 3, 5, 7]
list_b = [2, 3, 6, 8]
print(merge_sorted_lists(list_a, list_b))  # [1, 2, 3, 5, 6, 7, 8]
print(merge_sorted_lists_efficient(list_a, list_b))  # 同上

关键点:

  • 内置函数(如 set()sorted())通常已优化,优先使用。
  • 涉及多次查找时考虑转为集合或字典(O(1)查找)。
  • 双指针/滑动窗口适用于有序列表或子数组问题。

总结:根据问题特点选对工具,别重复造轮子。

filter 重新构造迭代结构了吧。楼主用 remove 接口试试

for i in range(len(source_list)):
if source_list[I].startswith(’/HomeV2’):
source_list.remove(i)

诶. (没认真审题…

[x for x in url_list if “/HomeV2” not in x]

如下

a= […上面那个 list]
for ele in a:
if ele.startwith("/HomeV2") or len(ele)>13:
a.remove(ele)
print “remove elements from a [%s]” % ele
else:
pass
print a

回到顶部