<p>没有提供.csv文件,但我假设读取是正确的,它会返回一个与您在代码的第一行中提供的列表类似的列表;特别是,您试图将数据打包到一个列表列表中(einmalig变量是一个由csv文件的行获得的列表,然后将在另一个列表中找到的每个einmalig追加到另一个列表中,奥夫贝雷特)。你知道吗</p>
<p>问题不在于函数本身,而在于作为输入提供的参数:当您这样做时</p>
<pre><code>test = index_equals_str(input_str="Color", index=2, input_lst=aufbereitet)
</code></pre>
<p>您应该看到,第三个参数不是对应于单个电影数据的列表,而是电影的整个列表。这意味着函数中的Python解释器对aufberitet中的每个项都执行此迭代(即,迭代n次,其中n是aufberitet的长度):</p>
<pre><code>if aufbereitet[2] == "Color":
return True
else:
return False
</code></pre>
<p>很明显,即使电影是彩色的,列表(aufberitet的元素)和字符串之间的比较在默认情况下也返回False,因为它们是不同的类型。你知道吗</p>
<p>要纠正这个问题,只需更改行</p>
<pre><code>test = index_equals_str(input_str="Color", index=2, input_lst=aufbereitet)
</code></pre>
<p>与</p>
<pre><code>test = index_equals_str(input_str="Color", index=2, input_lst=item)
</code></pre>
<p>因为,以这种方式使用for循环时,变量项在每次迭代时都会随着aufberitet中的元素而改变。你知道吗</p>
<p>请注意,如果您正在学习使用函数仍然可以,但是您可以使用算法的内联版本(这就是Python的著名之处)。使用</p>
<pre><code>finale_liste = [item[2] == "Color" for item in aufbereitet]
</code></pre>
<p>获取列表时不需要定义函数,也不需要使用for循环。这叫做列表理解。你知道吗</p>
<p>如果你想使用函数,你可以做的另一件事就是做</p>
<pre><code>def index_equals_str(input_lst, index, input_str):
return input_lst[index] == input_str
</code></pre>
<p>用更少的线就能得到同样的结果。你知道吗</p>