Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从列表中删除以类似python开头的字符串_Python_String_List - Fatal编程技术网

从列表中删除以类似python开头的字符串

从列表中删除以类似python开头的字符串,python,string,list,Python,String,List,我有一个字符串列表。弦很长。我想删除前10个或更多字符相同的字符串,并只保留其中一个。例如: lst = ['I am going today to London', 'I am going today to Tokyo', 'My name is name'] 应该给, lst = ['I am going today to Tokyo', 'My name is name'] 任何字符串都可以保留。如何有效地执行此操作?使用对象的解决方案: def pick_one_from_each_

我有一个字符串列表。弦很长。我想删除前10个或更多字符相同的字符串,并只保留其中一个。例如:

lst = ['I am going today to London', 'I am going today to Tokyo', 'My name is name']
应该给,

lst = ['I am going today to Tokyo', 'My name is name']
任何字符串都可以保留。如何有效地执行此操作?

使用对象的解决方案:

def pick_one_from_each_equivalence_class(original_list, equivalence_key_function):
    res = []
    equivalence_classes = set()
    for value in original_list:
        equivalence_class = equivalence_key_function(value)
        if equivalence_class not in equivalence_classes:
            res.append(value)
            equivalence_classes.add(equivalence_class)
    return res

pick_one_from_each_equivalence_class(lst, lambda x: x[:10])
输出:

['I am going today to London', 'My name is name']


l[0:10]不在s10中
-测试行
l[0:10]
的前10个字符是否为集合
s10
s10
填充了唯一的10个字符序列)

我会使用字典来获得唯一性:

dict((x[:10]: x) for x in lst).values()

应该保留哪一个?如果字符串长度小于10个字符怎么办?正如我上面所说的,任何一个都可以保留。它的长度不会少于10个字符。10只是一个随机数。数字可以是任何数字。如果问题不止这些,只需使用
尝试跳过它,除了
@willemvanonsem您尝试了什么,它有什么问题?有些人只是对与此问题相关的所有内容投了否决票。天知道他有多报复(可能是因为你的问题在你的网站上没有表现出任何努力。帮助解决具体问题也是如此,而不是“写我的代码”式的问题:)[注意,我没有否决投票,但我投票关闭了bc的投票]这就是被问到的问题。下层选民愿意解释这个答案的错误吗?这只是一个代码转储,没有解释它是如何解决OP的问题的(这对你和我来说都很明显,但OP可能知道的不多)。同样,这不是一个代码编写服务,通过回答这样的问题来鼓励人们像对待一个服务一样对待它也不是很有用。你也有打字错误。谢谢你的反馈,@jornsharpe。我喜欢编写干净、自解释、自文档化的代码。如果OP或任何人因某种原因仍不清楚某些内容,欢迎他们在评论中提问,并回答(评论或编辑答案)。如果您将我的答案与公认的答案(RomanPerekhrest)进行比较,您会发现它更通用、更模块化,并且使用了有意义的名称。此外,除非明确要求,否则我认为那里的解释是完全多余的。这是生产质量代码,不是“让我们希望我永远不会重访”脚本。op想要第一个匹配(东京),你的解决方案给出第二个匹配(伦敦)@PedroLobito:no,首先指定任何匹配都足够,而且伦敦是第一个匹配。东京是第二大城市。
dict((x[:10]: x) for x in lst).values()