Python2D列表切片,其中一个列表充满空字符串

2024-10-06 12:21:18 发布

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

假设我有一个2D列表,如:

[
  [
    "9743",
    "user3"
  ],
  [
    "435",
    "user2"
  ],
  [
    "5426",
    "user8"
  ],
  [
    "",
    ""
  ],
  [
    "9743",
    "user9"
  ]
]

其中,空字符串列表的索引未知。是否有一种简单的方法来分割列表,以便删除列表后面的所有内容,包括带有空字符串的列表,只保留前面的内容


Tags: 方法字符串内容列表user2user9user8user3
3条回答

您可能会丢失这样一个for循环:(x是您的列表)

output = []
for pair in x:
    if pair != ['', '']:
        output.append(pair)
    else:
        break   # Breaking as soon as there is an empty pair.

输出为:

[['9743', 'user3'], ['435', 'user2'], ['5426', 'user8']]

如果您确定有['',''],请尝试以下操作:

lst = [[ "9743", "user3"],[ "435","user2"],["5426","user8"],["",""],["9743","user9"]]

lst[:lst.index(['',''])]
# Output
# [['9743', 'user3'], ['435', 'user2'], ['5426', 'user8']]

如果您不确定是否有['',''],请尝试以下方法:

lst = [[ "9743", "user3"],[ "435","user2"],["5426","user8"],["9743","user9"]]
try:
    out = lst[:lst.index(['',''])]
except ValueError:
    out = lst

输出:

[['9743', 'user3'], ['435', 'user2'], ['5426', 'user8'], ['9743', 'user9']]

您可以使用itertools.takewhile

from itertools import takewhile
list(takewhile(lambda x: x != ['', ''], the_list))

NB。我把这个名单命名为“the_list”

输出:

[['9743', 'user3'], ['435', 'user2'], ['5426', 'user8']]

如果要在''的任何项目处停止:

from itertools import takewhile
list(takewhile(lambda x: '' not in x, l))

相关问题 更多 >