下面的代码有效,虽然我需要相同的功能,但我不需要使用集合,而是需要使用元组。有人可以帮忙吗?
word = {'h','e','l','l','o'}
letters = {'a','b','c','l','h'}
remainder = word - letters
print (remainder)
感谢您花时间阅读本文。
答案 0 :(得分:3)
由于元组没有减法运算符,因此可以使用快速转换为元组的生成器表达式。此代码根据word
中的值构造元组,但省略了letters
中的值。这比使用集合的一个优点是保证项目在word
中保留其顺序。主要缺点是对于大元组/集合而言要慢得多,时间复杂度O(n**2)
而不是O(n)
的集合解决方案(如果两个元组/集合的大小都为n
})。还有一点需要注意的是,此代码保留word
但letters
中没有的任何重复值,而set解决方案会删除重复项 - 这可能是好事还是坏事,具体取决于。< / p>
word = ('h','e','l','l','o')
letters = ('a','b','c','l','h')
remainder = tuple(v for v in word if v not in letters)
print(remainder)