[英]How to extract sub-List, tuples and digits from List?
我有一个列表( CustomerID ),其中包含列表、数字、元组,我需要执行以下任务:
一种。 提取子列表 [1,2],[2,3],[4,6],[6,9], 元组 (1,2,3) (76,5,3) 和数字并插入到单独的列表中。 湾访问 List 和 Tuple 中的元素,例如:[1,2] elemt0, elemt1
CustomerID = [[1,2],[2,3],[4,6],[6,9],3,7,2,(1,2,3),(76,5,3)]
请帮我。
我尝试了下面的代码,但无法访问元素并说 new list(lstEle) 不是 List 类型。
while(a <= len(lst)-2):
lstEle.append(lst[a])
a +=1
试试这个代码
CustomerID = [[1,2],[2,3],[4,6],[6,9],3,7,2,(1,2,3),(76,5,3)]
list_of_lists =[]
list_of_tuples =[]
list_of_elements =[]
for item in CustomerID:
if type(item) is list:
list_of_lists.append(item)
elif type(item) is tuple:
list_of_tuples.append(item)
else:
list_of_elements.append(item)
使用isinstance
前任:
CustomerID = [[1,2],[2,3],[4,6],[6,9],3,7,2,(1,2,3),(76,5,3)]
lst = []
tpl = []
dgts = []
for i in CustomerID:
if isinstance(i, list):
lst.append(i)
elif isinstance(i, tuple):
tpl.append(i)
else:
dgts.append(i)
print(lst)
print(tpl)
print(dgts)
输出:
[[1, 2], [2, 3], [4, 6], [6, 9]]
[(1, 2, 3), (76, 5, 3)]
[3, 7, 2]
添加一个替代方案,我认为这是使用函数式编程的一个很好的例子。 您可以轻松使用filter
但尝试使用reduce
也很有趣。
from functools import reduce
CustomerID = [[1,2],[2,3],[4,6],[6,9],3,7,2,(1,2,3),(76,5,3)]
reduce(
lambda acc, cur:
{ **acc, type(cur).__name__:[cur] + acc[type(cur).__name__] },
CustomerID,
{'list':[], 'tuple':[], 'int':[]}
)
也许一开始,它看起来有点尴尬,但是一旦你理解了reduce
,你就会发现它非常优雅(至少这是我的观点;)。 它也很好地推广到新案例(例如新类型)而没有太多变化......
PS:我没看懂你问题的最后一部分......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.