如何按特定项目剪切列表?

frankzheng43

我正在尝试按其中的特定项目剪切列表,例如,我有一个这样的列表:

down = ["a", "b", "c", "d", "b", "e", "r"]

我想要的是:

[["a", "b"]["c", "d", "b"] ["e", "r"]]

在每次出现"b".

我写了这样的东西:

down = ["a", "b", "c", "d", "b", "e", "r"]
up = []
while down is not []:
    up, down = up.append(down[:(down.index("b") + 1)]), down[(down.index("b") + 1):]

它抛出一个错误:

AttributeError: 'NoneType' object has no attribute 'append'

我无法弄清楚出了什么问题。

帕特里克·阿特纳

您收到错误是因为您将list.append()函数的结果- 即None-分配up

up, down = up.append(down[: (down.index("b") + 1)]), down[...snipp...] 
#          ^^^^^^^^ returns None

list.append是一个返回的“就地”操作,None因此upNone在下一次迭代中进行。

保持最接近你可以使用的东西

down = ["a", "b", "c", "d", "b", "e", "r"]
up = []
while 'b' in down:
    b_index = down.index('b') + 1
    up.append(down[:b_index])
    down = down[b_index:]
up.append(down)

但在我看来,简单地迭代您的原始列表并将子列表组装在第二个列表中会更清晰:

k = ["a", "b", "c", "d", "b", "e", "r"]

result = [[]]
for e in k:
    if e != "b":
        result[-1].append(e)
    else:
        result[-1].append(e)
        result.append([])

if result[-1] == []: 
    result.pop() # thx iBug's comment

print(result) # [['a', 'b'], ['c', 'd', 'b'], ['e', 'r']]

我认为这比您的代码尝试做的要清楚得多-您的“我想要的["a", "b"]["c", "d", "b"] ["e", "r"]”不是有效的python。


代码的一个稍微不同的版本是:

k = ["a", "b", "c", "d", "b", "e", "r"]
b = []
while True:
    try:
        b_idx = k.index("b")
    except: 
        b.append(k)
        break
    else:
        b,k = b+[k[:b_idx+1]],k[b_idx+1:]
print(b) 

但是您需要通过更多的方式搜索您的列表.index()try: except因此它的性能比简单地迭代一次列表更差。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从文件列表中剪切并替换特定的列

来自分类Dev

如何按帧剪切视频文件

来自分类Dev

在打印如何从列表末尾剪切空间时

来自分类Dev

Javascript:如何剪切字符串的特定部分?

来自分类Dev

如何从文件BASH剪切和覆盖特定部分

来自分类Dev

如何从出现特定模式的行开始剪切文件?

来自分类Dev

用Java剪切列表

来自分类Dev

从列表中剪切列

来自分类Dev

从列表中剪切列

来自分类Dev

在bash中按列名剪切列

来自分类Dev

按子数组键值剪切数组

来自分类Dev

如何按多个项目搜索/过滤列表?

来自分类Dev

如何在角度的* ngFor列表的每个项目中切换特定元素的类?

来自分类Dev

如何剪切CSV文件

来自分类Dev

如何剪切图像的角落

来自分类Dev

如何编写一个csvcut脚本以按头剪切包含多个文件的列?

来自分类Dev

按特定值从通用列表中获取所有项目

来自分类Dev

是否可以剪切图像的特定部分?

来自分类Dev

PHP剪切特定字符串

来自分类Dev

在循环中剪切String的特定部分

来自分类Dev

PHP剪切特定字符串

来自分类Dev

如何使用python将字符串更改为以','剪切的列表?

来自分类Dev

如何使用递归根据谓词剪切序列介绍列表的序列

来自分类Dev

如何在特定字符后剪切R中的所有行/字符

来自分类Dev

如何在unix中的特定字符后剪切字符串

来自分类Dev

Notepad ++如何在特定字符后剪切所有文本

来自分类Dev

如何在Unix Shell脚本中剪切文件中的特定字符

来自分类Dev

如何在JavaScript中剪切字符串的特定部分

来自分类Dev

如何使用ffmpeg剪切特定的视频帧并转换帧率?