Сначала, когда вы примените эту строку:
filter_string = [str(item) for item in filter]
Вы применяете функцию str () к объекту кортежа - превращаете весь кортеж в строку. например - str(('99:2', 0.35714285714285715))
-> '(\\'99:2\\', 0.35714285714285715)'
Что, на мой взгляд, затрудняет анализ.
Во-вторых, tuple
- это сохраненное имя в python - , не используйте его и запусти его ! это может вызвать очень раздражающие ошибки позже.
Наконец, вы можете рассматривать кортеж как массив фиксированного размера, который индексируется, что означает, что вы можете обращаться к первому элементу (по которому вы хотите фильтровать)
Примерно так:
my_tuples = [('7:29', 0.5), ('99:2', 0.35714285714285715), ('10:2', 0.35714285714285715)]
my_filter = [7, 99]
filtered_list = [t for t in my_tuples if int(t[0].split(':')[0])
in my_filter]