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

2024-05-19 00:00:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表(CustomerID),其中包含列表、数字、元组,我需要执行以下任务:

a.提取子列表[1,2]、[2,3]、[4,6]、[6,9]、元组(1,2,3)(76,5,3)和数字,并插入到单独的列表中。 b、 访问列表和元组中的元素,例如:[1,2]elemt0,elemt1

CustomerID = [[1,2],[2,3],[4,6],[6,9],3,7,2,(1,2,3),(76,5,3)]

请帮帮我。你知道吗

我尝试了下面的代码,但无法访问元素,并说新列表(lstEle)不是列表类型。你知道吗

while(a <= len(lst)-2):
    lstEle.append(lst[a])
    a +=1

Tags: 代码元素类型列表len数字元组customerid
3条回答

使用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]

尝试此代码

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)

另外,我认为这是一个使用函数式编程的好例子。您可以很容易地使用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,你就会发现它相当优雅(至少我是这么认为的)。 它也很好地推广到新的情况下(如新类型),没有太多的变化。。。你知道吗

我不明白你问题的最后一部分。。。你知道吗

相关问题 更多 >

    热门问题