Python:根据子列表项的第一个字符从列表中删除子列表

Python:根据子列表项的第一个字符从列表中删除子列表,python,list,Python,List,我正在尝试为以下函数编写python 3代码: 我有一个名为Config的列表 Config = [[32, 31, 33, 34], [32, 42, 13, 33], [32, 42, 34, 44], [42, 42, 43, 44]] 此列表有4个子列表 现在我想从Config中获得一个新列表,如下所示,没有第一个子列表和第四个子列表 ConfigRevised = [[32, 42, 13, 33], [32, 42, 34, 44]] 因为从每个子列表中可以观察到: [32,31

我正在尝试为以下函数编写python 3代码:

我有一个名为Config的列表

Config = [[32, 31, 33, 34], [32, 42, 13, 33], [32, 42, 34, 44], [42, 42, 43, 44]]
此列表有4个子列表

现在我想从Config中获得一个新列表,如下所示,没有第一个子列表和第四个子列表

ConfigRevised = [[32, 42, 13, 33], [32, 42, 34, 44]]
因为从每个子列表中可以观察到:

[32,31,33,34]:列表中每个项目的第一个字符相同[3,3, 3, 3] . [32,42,13,33]:列表中每个项目的第一个字符不相同 [3, 2, 1, 3] . [32,42,34,44]:列表中每个项目的第一个字符不相同 [3, 4, 3, 4] . [42,42,43,44]:列表中每个项目的第一个字符相同[4,4, 4, 4]. 现在,我想删除子列表1和子列表4,因为子列表项的第一个字符是相同的

您可以尝试以下方法:

Config = [[32, 31, 33, 34], [32, 42, 13, 33], [32, 42, 34, 44], [42, 42, 43, 44]]
new_results = [i for i in Config if len({str(b)[0] for b in i}) > 1]
输出:

[[32, 42, 13, 33], [32, 42, 34, 44]]

如果要从旧的创建新的,则:

Config = [[32, 31, 33, 34], [32, 42, 13, 33], [32, 42, 34, 44], [42, 42, 43, 44],[11,22,33,44]]

checker=[]
for j,i in enumerate(Config):
    check_data=[list(str(j))[0] for j in i]
    datar=[check_data for m in check_data if check_data.count(m)>2]
    if not datar:
        checker.append(i)
print(checker)
如果要删除,则可以尝试:

Config = [[32, 31, 33, 34], [32, 42, 13, 33], [32, 42, 34, 44], [42, 42, 43, 44],[11,22,33,44]]

checker={}
for j,i in enumerate(Config):
    check_data=[list(str(j))[0] for j in i]
    datar=[check_data for m in check_data if check_data.count(m)>2]
    if datar:

        checker[j]=1
    else:
        checker[j]=0

for value,del_value in checker.items():
    if del_value==1:
        del Config[value]
print(Config)
输出:

[[32, 42, 13, 33], [32, 42, 34, 44], [42, 42, 43, 44]]