繁体   English   中英

如何从列表中提取子列表、元组和数字?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM