我使用过C#和Java,每次我需要一个List,我想存储相同类型的对象,例如:
List<Customer> customers;
//or
List<Invoice> invoices;
列表可能包含不同类型的项目,但通常这些项目都具有相同的类型。
因此这是可能的:
list = [1, 2, 3, "cat", some_object, "another cat", 4, "and a cat again"]
有数百个混合列表的例子和解释为什么可能 我理解为什么在python中有可能有混合类型的列表,但我想不出一个有用的现实生活中的例子。
我很想知道混合名单是否有真正的优势 或者它只是:“我们不需要它,但我们可以!”
我是否遗漏了一些关于混合列表非常重要的东西,这会让我成为一个更好的python程序员?
修改
我认为这个答案将会让python不能这样做,所以让我重新说一下:
或者它只是:“我们不需要它,但我们不能这样做!”
答案 0 :(得分:5)
Python列出了相同类型的商店项目 - 对其他对象的引用。
或者只是:“我们不需要它,但我们可以!”
不,不是。 Python没有类型检查,所以它更“因为我们不能做其他事情”。
答案 1 :(得分:2)
首先,正如上面链接的cross-site question所引用的那样,请记住像Java这样的语言会让你创建一个Object
的数组,这与Python的默认list
非常相似。
其次,包含不同类型元素的数据结构有一个非常常见的用例。这是一个例子:
def get_row():
response = input('Enter your name and score, separated by a space: ').split()
return response[0], int(response[1])
现在你要返回一个包含字符串和整数的tuple
。
这是另一个例子:
names = ['Alice', 'Bob', 'Charlie']
scores = [8, 12, 9]
results = dict(zip(names, scores))
如果无法使用字符串和整数创建tuple
,我们可能需要执行results = {name:scores[i] for i, name in enumerate(names)}
之类的操作。我们能?当然......但很高兴我们可以选择看起来更好的那个,甚至不用考虑我们的数据结构是否包含str
或int
或object
,而不必在编译器允许我们使用它们之前强制转换object
。
答案 2 :(得分:0)
它有应用程序导致多态性。想象一下,你有多个运动对象,比如socker
,basketball
和football
,每个运动对象都有不同但都被播放,所以你可以说
socker = Socker()
basketball = Basketball()
football = Football()
sportsILike = [socker, basketball, football]
for sport in sportsILike:
sport.play()
有趣的是,这些运动是不同的课程!