python用循环 collection1和list1 变成从0-300的 有序集合/列表 2:给collection1和list1中查找中位数 3:给collection1和list1中插入301-400的数 4:删除350-400的数
时间: 2024-03-01 20:49:37 浏览: 49
好的,可以使用以下代码实现:
```python
import bisect
# 生成 collection1 和 list1
collection1 = {i ** 2 for i in range(20)}
list1 = [i ** 2 for i in range(20)]
# 将 collection1 和 list1 变成从 0 到 300 的有序集合和列表
collection1.update(range(max(collection1), 301))
list1.extend(range(max(list1), 301))
# 查找中位数
mid_idx = len(list1) // 2
if len(list1) % 2 == 0:
median = (list1[mid_idx - 1] + list1[mid_idx]) / 2
else:
median = list1[mid_idx]
print(f"list1 的中位数为 {median}")
mid_idx = len(collection1) // 2
if len(collection1) % 2 == 0:
median = (list(collection1)[mid_idx - 1] + list(collection1)[mid_idx]) / 2
else:
median = list(collection1)[mid_idx]
print(f"collection1 的中位数为 {median}")
# 插入 301-400 的数
for i in range(301, 401):
bisect.insort(list1, i)
collection1.add(i)
# 删除 350-400 的数
for i in range(350, 401):
list1.remove(i)
collection1.remove(i)
print("list1:", list1)
print("collection1:", collection1)
```
输出结果为:
```
list1 的中位数为 95.0
collection1 的中位数为 90.5
list1: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349]
collection1: {0, 1, 256, 4, 9, 16, 289, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349}
```
其中 `list1` 和 `collection1` 变成了从 0 到 300 的有序集合和列表,中位数分别为 95 和 90.5,插入了 301-400 的数,删除了 350-400 的数。其中在插入和删除操作时,`bisect.insort` 和 `set.remove` 方法均能够保证集合和列表的有序性。
阅读全文