我正在尝试为以下函数编写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]]
因为可以从每个子列表中观察到:
现在,我想删除子列表1和子列表4,因为子列表项的第一个字符是相同的。
答案 0 :(得分:0)
你可以试试这个:
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]]
答案 1 :(得分:0)
如果你想从旧的创建一个新的:
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]]