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() 的工作机制如下:

  1. 无参数:返回空列表。

  2. 可迭代对象:将其元素逐个添加到新列表中。

  3. 字典:默认使用字典的键,也可以使用值或键值对。

  4. 生成器或迭代器:遍历其所有元素并添加到新列表中。

  5. 其他类型:尝试转换为列表,失败则抛出 TypeError

  6. 自定义可迭代对象:调用其 __iter__() 方法并遍历元素。

通过 list(),可以轻松地将各种可迭代对象转换为列表!

最后更新于

这有帮助吗?