当前位置: 首页 > 面试题库 >

根据元素的某些方面,如何将Python列表分为两个列表

彭阳荣
2023-03-14
问题内容

我有一个这样的清单:

[[8, "Plot", "Sunday"], [1, "unPlot", "Monday"], [12, "Plot", "Monday"], [10, "Plot", "Tuesday"], [4, "unPlot", "Tuesday"], [14, "Plot", "Wednesday"], [6, "unPlot", "Wednesday"], [1, "unPlot", "Thursday"], [19, "Plot", "Thursday"], [28, "Plot", "Friday"], [10, "unPlot", "Friday"], [3, "unPlot", "Saturday"]]

我想根据PlotunPlot值将其分为两个列表,结果是:

list1=[[8, "Plot", "Sunday"], [12, "Plot", "Monday"], ...]
list2=[[1, "unPlot", "Monday"], [4, "unPlot", "Tuesday"], ...]

问题答案:

尝试基本的列表理解:

>>> [ x for x in l if x[1] == "Plot" ]
[[8, 'Plot', 'Sunday'], [12, 'Plot', 'Monday'], [10, 'Plot', 'Tuesday'], [14, 'Plot', 'Wednesday'], [19, 'Plot', 'Thursday'], [28, 'Plot', 'Friday']]
>>> [ x for x in l if x[1] == "unPlot" ]
[[1, 'unPlot', 'Monday'], [4, 'unPlot', 'Tuesday'], [6, 'unPlot', 'Wednesday'], [1, 'unPlot', 'Thursday'], [10, 'unPlot', 'Friday'], [3, 'unPlot', 'Saturday']]

或者,filter如果您喜欢函数式编程,也可以:

>>> filter(lambda x: x[1] == "Plot", l)
[[8, 'Plot', 'Sunday'], [12, 'Plot', 'Monday'], [10, 'Plot', 'Tuesday'], [14, 'Plot', 'Wednesday'], [19, 'Plot', 'Thursday'], [28, 'Plot', 'Friday']]
>>> filter(lambda x: x[1] == "unPlot", l)
[[1, 'unPlot', 'Monday'], [4, 'unPlot', 'Tuesday'], [6, 'unPlot', 'Wednesday'], [1, 'unPlot', 'Thursday'], [10, 'unPlot', 'Friday'], [3, 'unPlot', 'Saturday']]

我个人发现列表理解要清晰得多。当然,这是最“ pythonic”的方式。



 类似资料:
  • 问题内容: 我是Java8的新手。我需要根据某些条件(从另一列表中)减去/删除一个列表中的POJO,并将其显示在UI上。 迭代一个列表并搜索条件删除对象将原始列表发送到UI ..主要代码.. 有没有更好的方法来处理循环?任何帮助表示赞赏。 问题答案: 你现在所拥有的代码工作完美,但也因为通过迭代的每一个。改善的一种方法是将每个孩子的存储在中,如果其中包含每个孩子,则将其从中删除:

  • 问题:如何将列表拆分为两个子列表,其中元素由元素中的选项卡分隔? 上下文:我想读取一个由制表符分隔的文件到Pandas DataFrame中。这些文件看起来像: 列1\t 123 列2\t 列3\t文本 这意味着每行有一列,后面跟着一个选项卡,然后是该列的一个值(有时没有值)。 我的想法是读取文件并将每行保存为列表的元素,然后将列表分成两个,将选项卡前的第一部分作为一个列表,选项卡后的第二部分作为

  • 问题内容: 我有两个看起来像的清单: 我要做的是将list1的所有那些元素都保留在list2中。结果应该是: 问题答案: 使用运算符,您可以检查元素是否在序列中。 使用列表理解: 但是效率不高。您最好转换为对象。

  • 问题内容: 我想将迭代器分为两个具有交替元素的列表。这是一个可行的解决方案。但是,有没有更简单的方法可以达到相同目的呢? 样本输出: 问题答案: 如果是一个序列,则: 如果是完全通用的可迭代对象,例如生成器:

  • 问题内容: 我有两个列表,我想按元素将它们连接起来。列表之一在连接之前要经过字符串格式化。 例如 : 在这种情况下,要进行字符串格式化。也就是说,new或应为: 最终输出应为: 有人可以告诉我该怎么做吗? 问题答案: 用途 :

  • 问题内容: 我有一个带有一列的数据框,我想将其分为两列,其中一列标题为,另一列为 我的数据框df如下所示: 我不知道如何使用以达到分割行单元的目的。我可以用来添加一个新列,并用填充它hello。有任何想法吗? 问题答案: 对于以下简单情况: 我有一个带有定界符的文本列,我想要两列 最简单的解决方案是: 或者,你可以使用以下方法自动为拆分的每个条目创建一个带有一列的DataFrame: 如果字符串的

  • 我试图将一个数据列表一分为二,但我不知道如何正确执行。 当我使用dput(a)时,我的数据如下 结构(列表)(V1=结构(c(1L、9L、10L、11L、12L、13L、14L、15L、16L、2L、3L、4L、5L、6L、7L、8L)。标签=c(“1\t1200.30”,“10\t1305.80”,“11\t1263.02”,“12\t1312.67”,“13\t1229.85”,“14\t12

  • 问题内容: 是否有一些函数可以从某些列表中返回N个最高元素? 即,如果返回单个最高元素sth。就像会给我返回10个最高数字的列表(如果较小则更少)。 或获得这些有效的简便方法是什么?(除了明显的规范实现;而且,没有这样的事情需要首先对整个列表进行排序,因为与规范解决方案相比效率不高。) 问题答案: :