List 在Python中创建列表列表和跳过元素

List 在Python中创建列表列表和跳过元素,list,python-3.x,List,Python 3.x,如何使用[x for x in input](其中input是字符串列表)创建列表并跳过满足特定条件的元素?例如,这是列表列表列表: [['abc', 'def', 'ghi'], ['abc', 'd_f', '+hi'], ['_bc', 'def', 'ghi']] 这应该是输出——跳过的元素包含''.'或'+': [['abc', 'def', 'ghi'], ['abc'], ['def', 'ghi']] 谢谢 您需要了解子列表: [[item for item in sub i

如何使用
[x for x in input]
(其中input是字符串列表)创建列表并跳过满足特定条件的元素?例如,这是列表列表列表:

[['abc', 'def', 'ghi'], ['abc', 'd_f', '+hi'], ['_bc', 'def', 'ghi']]
这应该是输出——跳过的元素包含''.'或'+':

[['abc', 'def', 'ghi'], ['abc'], ['def', 'ghi']]

谢谢

您需要了解子列表:

[[item for item in sub if not any(char in item for char in '_+')] for sub in input]
这是以下内容的简化版本:

result = []
for sub in input:
    result.append([])
    for item in sub:
        should_add = True
        for char in '_+':
            if char in item:
                should_add = False
                break
        if should_add:
            result[-1].append(item)

您需要了解子列表:

[[item for item in sub if not any(char in item for char in '_+')] for sub in input]
这是以下内容的简化版本:

result = []
for sub in input:
    result.append([])
    for item in sub:
        should_add = True
        for char in '_+':
            if char in item:
                should_add = False
                break
        if should_add:
            result[-1].append(item)

与另一个答案非常相似,除了测试字符串是否只包含字母数字字符,而不是明确的
'
'+'
。循环遍历每个子列表,然后遍历每个子列表中的字符串

filtered = [[s for s in l if s.isalpha()] for l in lists]

print(filtered)

[['abc', 'def', 'ghi'], ['abc'], ['def', 'ghi']]

与另一个答案非常相似,除了测试字符串是否只包含字母数字字符,而不是明确的
'
'+'
。循环遍历每个子列表,然后遍历每个子列表中的字符串

filtered = [[s for s in l if s.isalpha()] for l in lists]

print(filtered)

[['abc', 'def', 'ghi'], ['abc'], ['def', 'ghi']]

另一个使用集合的简短版本:


另一个使用集合的简短版本: