Python 混合列表在现实生活中是否有优势
我曾经使用过C#和Java,每当我需要一个列表时,我都想存储相同类型的对象,比如:Python 混合列表在现实生活中是否有优势,python,list,Python,List,我曾经使用过C#和Java,每当我需要一个列表时,我都想存储相同类型的对象,比如: List<Customer> customers; //or List<Invoice> invoices; 有数百个混合列表的例子,以及为什么可能的解释。 我理解为什么在python中可以有混合类型的列表,但我想不出一个实际例子在哪里有用 有一段时间我一直在想混合名单是否真的有好处。 或者只是:“我们不需要它,但我们可以!” 我是否遗漏了一些非常重要的关于混合列表的东西,这些东西会使
List<Customer> customers;
//or
List<Invoice> invoices;
有数百个混合列表的例子,以及为什么可能的解释。我理解为什么在python中可以有混合类型的列表,但我想不出一个实际例子在哪里有用 有一段时间我一直在想混合名单是否真的有好处。
或者只是:“我们不需要它,但我们可以!” 我是否遗漏了一些非常重要的关于混合列表的东西,这些东西会使我成为一名更好的python程序员 编辑:
我想这个答案会被给出,python不能做其他事情,所以让我重新表述一下:
或者仅仅是:“我们不需要它,但我们不能这样做!”Python列表存储相同类型的项——对其他对象的引用 或者只是:“我们不需要它,但我们可以!”
不,不是。Python没有类型检查,所以它相当于“因为我们不能做其他事情”。首先,正如上面链接中所提到的,记住像Java这样的语言将允许您创建一个
对象的数组,它与Python的默认列表
非常相似
其次,对于包含不同类型元素的数据结构,有一个非常常见的用例。下面是一个例子:
def get_row():
response = input('Enter your name and score, separated by a space: ').split()
return response[0], int(response[1])
现在返回一个包含字符串和整数的元组
下面是另一个例子:
names = ['Alice', 'Bob', 'Charlie']
scores = [8, 12, 9]
results = dict(zip(names, scores))
如果不能创建带有字符串和整数的元组
s,我们可能必须执行类似results={name:scores[i]for i,name in enumerate(names)}
。我们可以吗?当然但是,我们可以选择一个看起来更好的,甚至不必考虑我们的数据结构是否包含str
或int
或object
,并且在编译器允许我们使用它们之前,不必强制转换object
。它具有导致多态性的应用程序。假设您有多个运动对象,如socker
、basketball
和football
,每个运动对象的运动方式不同,但所有运动对象的运动方式都不同,因此您可以这样说
socker = Socker()
basketball = Basketball()
football = Football()
sportsILike = [socker, basketball, football]
for sport in sportsILike:
sport.play()
有趣的是,这些运动是不同的课程 我真的不明白这个问题。有时我需要存储不同类型事物的集合,有时我需要存储相同类型事物的集合。无论哪种方式,我都使用一个列表。在我的头顶上,是db表中一行中列的值。或者使用*args
语法传递给函数的参数。最近我需要一个没有为某些索引定义值的列表,所以我使用了None
。我需要一个同时包含int
和NoneType
(例如:[1,3,2,None,4,None,1]
)的列表。JSON定期混合字典和列表。我无法想象必须将它们均匀地排列。正如我所说的,我理解python是如何工作的,我理解它所包含的内容,python不能做其他事情。你仍然没有回答我的问题是否有优势。>如果混合列表有真正的优势<有一些(摘自评论),但是在Python中,这个问题没有多大意义,因为你没有语言约束。
socker = Socker()
basketball = Basketball()
football = Football()
sportsILike = [socker, basketball, football]
for sport in sportsILike:
sport.play()