python - 为什么我的代码要打印两次蓝莓?怎么了?
问题描述
b_strings = [ ]
L = [['apples', 'bananas', 'oranges', 'blueberries', 'lemons'], ['carrots', 'peas', 'cucumbers', 'green beans'], ['root beer', 'smoothies', 'cranberry juice']]
for x in L:
for y in x:
for z in y:
if z == 'b':
b_strings.append(y)
print(b_strings)
下面,我们提供了一个名为 L 的列表列表。使用嵌套迭代将每个包含“b”的字符串保存到一个名为 b_strings 的新列表中。
解决方案
因为里面有两个b
。blueberries
所以if z == 'b':
会成功两次,b_strings
每次都会追加单词。
如果你只想做一次,你可以跳出循环。
for x in L:
for y in x:
for z in y:
if z == 'b':
b_strings.append(y)
break
或者您可以使用in
运算符来检查字母,而不是循环。
for x in L:
for y in x:
if 'b' in y:
b_strings.append(y)