python - 循环拆分列表

标签 python nested-lists

我是 Python 的新手,似乎无法通过谷歌搜索来修复我的错误。我想使用循环拆分列表,但语法不正确。

alist = ["aa-aa-aa-aa|bb|cc","bb-bb-bb|abc|ab","cc-cccc-cc|abc|a"]
alist[0] = alist[0].split("|")
alist[0][0] = alist[0][0].split("-")
print(alist)

以上适用于拆分第一个条目的第一个条目的情况,但我想拆分列表中每个项目的第一个条目。

给定输出:

[[['aa', 'aa', 'aa', 'aa'], 'bb', 'cc'], 'bb-bb-bb|abc|ab', 'cc-cccc-cc|abc|a']

期望的输出:

[[['aa', 'aa', 'aa', 'aa'], 'bb', 'cc'], [['bb','bb','bb'],'abc','ab'], [['cc','cccc','cc'],'abc','a']

但是,当我尝试像处理文件那样循环时,我得到了一个错误。

alist = ["aa-aa-aa-aa|bb|cc","bb-bb-bb|abc|ab","cc-cccc-cc|abc|a"]
n = 0
for n in alist:
    alist[n] = alist[n].split("|")
    alist[n][0] = alist[n][0].split("-")
print(alist)

错误信息:

Traceback (most recent call last):
  File "C:\Users\EALDEN3\Documents\Python Code\Scratch.py", line 5, in <module>
    alist[n] = alist[n].split("|")
TypeError: list indices must be integers or slices, not str

如有任何帮助,我们将不胜感激。

最佳答案

在您的 for 循环中,n 是元素而不是索引,如果您想使用索引,您需要以不同的方式执行循环:

alist = ["aa-aa-aa-aa|bb|cc","bb-bb-bb|abc|ab","cc-cccc-cc|abc|a"]
for index in range(len(alist)):
    alist[index] = alist[index].split("|")
    alist[index][0] = alist[index][0].split("-")
print(alist)

输出:

[[['aa', 'aa', 'aa', 'aa'], 'bb', 'cc'], [['bb', 'bb', 'bb'], 'abc', 'ab'], [['cc', 'cccc','cc'], 'abc', 'a']]

请注意,您的解决方案会就地执行操作(这可能不是您想要的)。

如果你想要一个单行的,这也将以一种有效的方式获得相同的输出:

result = [[val.split('-') if index == 0 else val for index, val in enumerate(substr.split('|'))] for substr in alist]

关于python - 循环拆分列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56636537/

相关文章:

python - 破解这个嵌套列表列表?

python - IMAP 在发件人字段中搜索电子邮件地址

python - 使用谷歌云函数生成Python脚本

python - 寻找 : nosql (redis/mongodb) based event logging for Django

jquery嵌套可排序列表

python - 在 Python 中从列表创建元组

r - 展平嵌套列表并保留每个底层元素的所有父键

python - 如何按列优先顺序显示数字序列?

python - Python 中 2D 平面中的点的透视变换

python - 使用 Django 流式传输视频