面试题答案
一键面试常见场景及出错原因
- 直接修改元组元素:
- 示例代码:
my_tuple = (1, 2, 3)
my_tuple[0] = 4 # 尝试修改元组第一个元素
- **出错原因**:元组是不可变序列,一旦创建,其元素和元素顺序都不能改变。在上述代码中,试图通过索引直接修改元组的元素,这违反了元组的不可变特性,会引发`TypeError: 'tuple' object does not support item assignment`错误。
2. 尝试对元组进行原地排序: - 示例代码:
my_tuple = (3, 1, 2)
my_tuple.sort() # 尝试对元组进行原地排序
- **出错原因**:元组没有`sort`方法,因为原地排序会改变元组元素的顺序,这与元组的不可变特性冲突。如果要对元组元素排序,可以使用`sorted`函数,该函数会返回一个新的已排序列表,而不是修改原元组。例如:`sorted(my_tuple)` 会返回 `[1, 2, 3]`,原`my_tuple`依然是`(3, 1, 2)` 。
3. 向元组中添加元素: - 示例代码:
my_tuple = (1, 2)
my_tuple.append(3) # 尝试向元组添加元素
- **出错原因**:元组没有`append`方法,因为添加元素会改变元组的内容,这不符合元组不可变的性质。如果要合并两个元组,可以使用`+`运算符创建一个新元组,例如:`new_tuple = my_tuple + (3,)` 会得到 `(1, 2, 3)` ,原`my_tuple`保持不变。