【发布时间】:2021-04-05 04:12:25
【问题描述】:
我有 3 个列表:
minimal_values = ['0,32', '0,35', '0,45']
maximal_values = ['0,78', '0,85', '0,72']
my_list = [
['Morocco', 'Meat', '190,00', '0,15'],
['Morocco', 'Meat', '189,90', '0,32'],
['Morocco', 'Meat', '189,38', '0,44'],
['Morocco', 'Meat', '188,94', '0,60'],
['Morocco', 'Meat', '188,49', '0,78'],
['Morocco', 'Meat', '187,99', '0,101'],
['Spain', 'Meat', '190,76', '0,10'],
['Spain', 'Meat', '190,16', '0,20'],
['Spain', 'Meat', '189,56', '0,35'],
['Spain', 'Meat', '189,01', '0,40'],
['Spain', 'Meat', '188,13', '0,75'],
['Spain', 'Meat', '187,95', '0,85'],
['Italy', 'Meat', '190,20', '0,11'],
['Italy', 'Meat', '190,10', '0,31'],
['Italy', 'Meat', '189,32', '0,45'],
['Italy', 'Meat', '188,61', '0,67'],
['Italy', 'Meat', '188,01', '0,72'],
['Italy', 'Meat', '187,36', '0,80']]
我想根据index [-1] 以及minimal_values 和maximal_values 中的值过滤my_list。像这样:
- 对于摩洛哥,我只想要
index[-1]在0,32和0,78之间的行 - 对于西班牙,我只想要
index[-1]在0,35和0,85之间的行 - 对于意大利,我只想要
index[-1]在0,45和0,72之间的行
我最终希望my_list 看起来像这样:
my_list = [
['Morocco', 'Meat', '189,90', '0,32'],
['Morocco', 'Meat', '189,38', '0,44'],
['Morocco', 'Meat', '188,94', '0,60'],
['Morocco', 'Meat', '188,49', '0,78'],
['Spain', 'Meat', '189,56', '0,35'],
['Spain', 'Meat', '189,01', '0,40'],
['Spain', 'Meat', '188,13', '0,75'],
['Spain', 'Meat', '187,95', '0,85'],
['Italy', 'Meat', '189,32', '0,45'],
['Italy', 'Meat', '188,61', '0,67'],
['Italy', 'Meat', '188,01', '0,72']]
这是我试过的代码:
for l in my_list:
if l[-1] >= [x for x in minimal_values] and <= [x for x in maximal_values]:
print(l)
我收到以下输出:
SyntaxError: invalid syntax
【问题讨论】:
-
逗号不是你想象的那样,字符串也不是你可以用那种方式比较的。您应该将所有字符串数字转换为浮点数。如果你的列表很长,你也应该使用
pandas。 -
我对@987654340@ 的值感到困惑。那应该代表
0.101还是不同的东西?如果0.101似乎不符合其他值的模式
标签: python list for-loop if-statement indexing