从列表中提取

2024-04-18 18:37:12 发布

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

如何在列表列表中提取元素并在python中创建另一个元素。所以,我想从中得到:

all_list = [['1 2 3 4','2 3 4 5'],['2 4 4 5', '3 4 5 5' ]]

像这样的新列表:

list_of_lists = [[('3','4'),('4','5')], [('4','5'),('5','5')]]

以下是我所做的,但不起作用。

for i in xrange(len(all_lists)):
   newlist=[]
   for l in all_lists[i]:
      mylist = l.split()
      score1 = float(mylist[2])
      score2 = mylist[3]
      temp_list = (score1, score2)
      newlist.append(temp_list)
   list_of_lists.append(newlist)

请帮忙。多谢提前。


Tags: ofin元素列表foralltemplists
3条回答

添加到eruciforms answer

首先,您不需要为所有列表生成索引。你可以直接迭代它:

for list in all_lists:
    for item in list:
        # magic stuff

第二点,通过拼接列表,可以使字符串拆分更加简洁:

values = item.split()[-2:] # select last two numbers.

使用map或list comprehension进一步减少它;您可以使所有项成为一个动态浮动项:

# make a list from the two end elements of the splitted list.
values = [float(n) for n in item.split()[-2:]] 

并使用内置的tuple创建结果列表:

values = tuple([float(n) for n in item.split()[-2:]])

最后,您可以将其全部折叠为一个大列表理解为sdolan shows

当然,您也可以手动索引到结果中并创建一个元组,但通常情况下,它会更加冗长,而且很难更改。

对变量名有了一些自由,在您的示例中,值将tmp_list

如果您填写mylist的值,它几乎可以正常工作——现在它还没有定义。

提示:使用字符串上的split函数将它们分解为它们的组件,您可以用结果填充mylist。

提示2:确保newlist在某个时刻被设置回空列表。

您可以使用嵌套列表理解。(这假设您希望每个字符串中的最后两个“分数”:

[[tuple(l.split()[-2:]) for l in list] for list in all_list]

相关问题 更多 >