我有以下列表:
my_list = [('-/1', '-/2'),('-/3', '4/-'), ('5/-', '-/6'), ('-/7', '-/8')]
基于/
,我想以[(-/a, b/-) or (a/-, -/b)]
的形式过滤列表项,其中a
和b
是整数。在上面的示例中,我想获取值[('-/3', '4/-'), ('5/-', '-/6')]
。这意味着仅排除[(a/-, b/-) and (-/a, -/b)]
形式的所有项目。
为此,我尝试了以下python脚本。
new_list= [e for e in my_list if '-' in str(e[0]) and '-' in str(e[1])]
print(new_list)
但是我得到了完整列表。
有什么方法可以在Python中获得上述结果吗?
答案 0 :(得分:2)
[item for item in my_list if '/-' in ''.join(item) and '-/' in ''.join(item)]
答案 1 :(得分:0)
您可以尝试:
my_list = [('-/1', '-/2'),('-/3', '4/-'), ('5/-', '-/6'), ('-/7', '-/8')]
output_list = []
for data in my_list:
temp = 0
for sub_index, sub_data in enumerate(data):
if sub_index == 0:
if "-" == sub_data[0]:
temp = 0
elif "-" == sub_data[-1]:
temp = -1
else:
if sub_data[temp] != "-":
output_list.append(data)
print(output_list)
输出:
[('-/3', '4/-'), ('5/-', '-/6')]
答案 2 :(得分:0)
my_list = [('-/1', '-/2'),('-/3', '4/-'), ('5/-', '-/6'), ('-/7', '-/8')]
new_list = []
for tuple in my_list:
if tuple[0][0:2] == '-/' and tuple[1][-2:] == '/-':
new_list.append(tuple) # append ('-/3', '4/-')
if tuple[0][-2:] == '/-' and tuple[1][0:2] == '-/':
new_list.append(tuple) # append ('5/-', '-/6')
print(new_list)
# if you don't mind sacrificing readability, here is a shorter version
# of the code from above
my_list = [('-/1', '-/2'),('-/3', '4/-'), ('5/-', '-/6'), ('-/7', '-/8')]
d = [tuple for tuple in my_list if (tuple[0][0:2] == '-/' and tuple[1][-2:] == '/-' or tuple[0][-2:] == '/-' and tuple[1][0:2] == '-/') ]
print(d)