首页 > 解决方案 > 为什么我的代码要打印两次蓝莓?怎么了?

问题描述

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 的新列表中。

标签: pythonpython-3.xdata-structurespython-3.7

解决方案


因为里面有两个bblueberries所以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)

推荐阅读