Lists.partition和 set partition
时间: 2023-11-30 15:02:04 浏览: 133
ZooKeeper 40 道面试题及答案.docx
`list.partition()` 和 `set.partition()` 是两种不同的方法,用于不同的数据类型。
`list.partition()` 是 Python 内置的列表方法,它接受一个谓词函数作为参数,并将列表拆分为两个部分:满足谓词函数的元素和不满足谓词函数的元素。它返回一个元组,其中第一个元素是满足谓词函数的元素列表,第二个元素是不满足谓词函数的元素列表,第三个元素是剩余的元素列表(如果有的话)。
例如,假设我们有一个整数列表 `[1, 2, 3, 4, 5, 6]`,我们想要将它们分为奇数和偶数两部分,可以使用 `list.partition()` 方法:
```python
nums = [1, 2, 3, 4, 5, 6]
odd, even, rest = nums.partition(lambda x: x % 2 != 0)
print(odd) # [1, 3, 5]
print(even) # [2, 4, 6]
print(rest) # []
```
`set.partition()` 并不是 Python 内置的方法,因为 `set` 类型本身就不保留项目的顺序。因此,`set.partition()` 不是一个有效的方法。
不过,我们可以通过手动编写代码来模拟 `set.partition()` 的行为。例如,假设我们有一个字符串集合 `{'apple', 'banana', 'cherry', 'date'}`,我们想要将它们分为两部分:以字母 'a' 开头的字符串和不以字母 'a' 开头的字符串。我们可以使用以下代码:
```python
strings = {'apple', 'banana', 'cherry', 'date'}
a_start = set(filter(lambda s: s.startswith('a'), strings))
not_a_start = strings - a_start
print(a_start) # {'apple'}
print(not_a_start) # {'banana', 'cherry', 'date'}
```
这段代码使用了 Python 内置的 `filter()` 函数和 `set` 类型的差集运算。它首先使用 `filter()` 函数找到以字母 'a' 开头的字符串,然后使用差集运算将它们从原始集合中移除,得到不以字母 'a' 开头的字符串集合。
阅读全文