list()
在 Python 中,list()
是一个内置函数,用于将其他可迭代对象转换为列表。它的工作机制会根据传入的参数类型而有所不同。以下是 list()
对不同参数的工作机制:
1. 无参数
如果 list()
不传入任何参数,它会返回一个空列表。
示例
empty_list = list()
print(empty_list) # 输出 []
2. 可迭代对象
如果传入一个可迭代对象(如字符串、元组、集合、字典等),list()
会将其元素逐个添加到新列表中。
示例
# 字符串
print(list("hello")) # 输出 ['h', 'e', 'l', 'l', 'o']
# 元组
print(list((1, 2, 3))) # 输出 [1, 2, 3]
# 集合
print(list({1, 2, 3})) # 输出 [1, 2, 3](顺序可能不同)
# 字典(默认使用键)
print(list({"a": 1, "b": 2})) # 输出 ['a', 'b']
3. 字典的键或值
如果传入字典,list()
默认使用字典的键。如果需要使用字典的值或键值对,可以结合字典的方法。
示例
my_dict = {"a": 1, "b": 2}
# 使用字典的键
print(list(my_dict)) # 输出 ['a', 'b']
# 使用字典的值
print(list(my_dict.values())) # 输出 [1, 2]
# 使用字典的键值对
print(list(my_dict.items())) # 输出 [('a', 1), ('b', 2)]
4. 生成器或迭代器
如果传入一个生成器或迭代器,list()
会遍历其所有元素并添加到新列表中。
示例
# 生成器表达式
gen = (x for x in range(3))
print(list(gen)) # 输出 [0, 1, 2]
# 迭代器
my_iter = iter([1, 2, 3])
print(list(my_iter)) # 输出 [1, 2, 3]
5. 其他类型
如果传入其他类型的对象,list()
会尝试将其转换为列表。如果对象不可迭代,则会抛出 TypeError
。
示例
# 数字(不可迭代)
try:
print(list(123))
except TypeError as e:
print(f"Error: {e}") # 输出 "Error: 'int' object is not iterable"
6. 自定义可迭代对象
如果传入一个自定义可迭代对象,list()
会调用其 __iter__()
方法,并遍历其元素。
示例
class MyIterable:
def __iter__(self):
return iter([1, 2, 3])
my_obj = MyIterable()
print(list(my_obj)) # 输出 [1, 2, 3]
总结
list()
的工作机制如下:
无参数:返回空列表。
可迭代对象:将其元素逐个添加到新列表中。
字典:默认使用字典的键,也可以使用值或键值对。
生成器或迭代器:遍历其所有元素并添加到新列表中。
其他类型:尝试转换为列表,失败则抛出
TypeError
。自定义可迭代对象:调用其
__iter__()
方法并遍历元素。
通过 list()
,可以轻松地将各种可迭代对象转换为列表!
最后更新于
这有帮助吗?