利用广义表的GetHead和GetTail操作写出函数表达式,把以下各小题中的单元素banana从广义表中分离出来: (1)L1=(apple,pear,banana,orange) (2)L2=((apple,pear),(banana,orange)) (3)L3=((((apple))),((pear)),(banana),orange)
时间: 2023-06-27 10:06:21 浏览: 268
小题(1):
```
L1 = (apple, pear, banana, orange)
head, tail = L1[0], L1[1:]
```
分离出来的 `banana` 存储在变量 `head` 中,去掉 `banana` 后的广义表存储在变量 `tail` 中。
小题(2):
```
L2 = ((apple, pear), (banana, orange))
head, tail = [x for x in L2 if "banana" in x][0], [x for x in L2 if "banana" not in x]
```
分离出来的 `banana` 存储在子广义表中,使用列表推导式找到包含 `banana` 的子广义表并存储在变量 `head` 中,去掉 `banana` 后的广义表存储在变量 `tail` 中。
小题(3):
```
L3 = ((((apple)), ((pear)), banana), orange)
head, tail = L3, None
while isinstance(head, tuple):
if "banana" in head[0]:
head, tail = head[0], head[1:]
else:
head = head[0]
```
分离出来的 `banana` 存储在最内层的子广义表中,使用循环找到包含 `banana` 的子广义表并存储在变量 `head` 中,去掉 `banana` 后的广义表存储在变量 `tail` 中。由于最后一层是元素,因此 `tail` 为 `None`。
阅读全文