Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用条件替换python3中列表中的项?_Python_List - Fatal编程技术网

如何使用条件替换python3中列表中的项?

如何使用条件替换python3中列表中的项?,python,list,Python,List,编写一个函数,用于打印0到100之间的所有整数: 对于每个可被7整除的数字,或具有数字7的数字,打印“boom”,而不是数字本身 到目前为止,我的解决方案是: def boom(): r = [] for i in range(1, 100): if i % 7 == 0 or '7' in str(i): r.append("boom") else: r.append(i) return r 打印(boom()) 帮助人:AkshayNevre

编写一个函数,用于打印0到100之间的所有整数: 对于每个可被7整除的数字,或具有数字7的数字,打印
“boom”
,而不是数字本身

到目前为止,我的解决方案是:

def boom():
r = []
for i in range(1, 100):
    if i % 7 == 0 or '7' in str(i):
        r.append("boom")
    else:
        r.append(i)
return r
打印(boom())

帮助人:AkshayNevrekar

问题:你有没有找到更好的方法来解决这个具体问题?更好的算法?谢谢

我认为您需要:

def boom(n):
    r = []
    for i in range(1,n+1):
        if i %7==0 or '7' in str(i):
            r.append("boom")
        else:
            r.append(i)
    return r

print(boom(100)) 
你可以试试这个

您需要检查i是否可被7整除如果是,则将
'BOOM'
添加到结果列表中。现在,如果一个数字中是否有数字7需要检查,您可以将i键入字符串,并使用
中的
检查是否有7。如果我不能被7整除,并且它不包含7,那么只需将我附加到结果列表中

def boom():
    return ['BOOM' if i%7==0 or '7' in str(i) else i for i in range(1,101)]
print(boom())

[1, 2, 3, 4, 5, 6, 'BOOM', 8, 9, 10, 11, 12, 13, 'BOOM', 15, 16, 'BOOM', 18, 19, 20, 'BOOM', 22, 23, 24, 25, 26, 'BOOM', 'BOOM', 29, 30, 31, 32, 33, 34, 'BOOM', 36, 'BOOM', 38, 39, 40, 41, 'BOOM', 43, 44, 45, 46, 'BOOM', 48, 'BOOM', 50, 51, 52, 53, 54, 55, 'BOOM', 'BOOM', 58, 59, 60, 61, 62, 'BOOM', 64, 65, 66, 'BOOM', 68, 69, 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 80, 81, 82, 83, 'BOOM', 85, 86, 'BOOM', 88, 89, 90, 'BOOM', 92, 93, 94, 95, 96, 'BOOM', 'BOOM', 99, 100]

在这里,
n
是范围,
inp
是替换其中包含7或可被7整除的数字的字符串


输出

[1, 2, 3, 4, 5, 6, '7 used to be here', 8, 9, 10, 11, 12, 13, '7 used to be here', 15, 16, '7 used to be here', 18, 19, 20]

1
2
3
4
5
6
7 used to be here
8
9
10
11
12
13
7 used to be here
15
16
7 used to be here
18
19
20
>>> boom()
[1, 2, 3, 4, 5, 6, 'BOOM', 8, 9, 10, 11, 12, 13, 'BOOM', 15, 16, 'BOOM', 18, 19, 20, 'BOOM', 22, 23, 24, 25, 26, 'BOOM', 'BOOM', 29, 30, 31, 32, 33, 34, 'BOOM', 36, 'BOOM', 38, 39, 40, 41, 'BOOM', 43, 44, 45, 46, 'BOOM', 48, 'BOOM', 50, 51, 52, 53, 54, 55, 'BOOM', 'BOOM', 58, 59, 60, 61, 62, 'BOOM', 64, 65, 66, 'BOOM', 68, 69, 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 80, 81, 82, 83, 'BOOM', 85, 86, 'BOOM', 88, 89, 90, 'BOOM', 92, 93, 94, 95, 96, 'BOOM', 'BOOM', 99, 100]
>>> boom(50)
[1, 2, 3, 4, 5, 6, 'BOOM', 8, 9, 10, 11, 12, 13, 'BOOM', 15, 16, 'BOOM', 18, 19, 20, 'BOOM', 22, 23, 24, 25, 26, 'BOOM', 'BOOM', 29, 30, 31, 32, 33, 34, 'BOOM', 36, 'BOOM', 38, 39, 40, 41, 'BOOM', 43, 44, 45, 46, 'BOOM', 48, 'BOOM', 50]
>>> boom(inp='hehe')
[1, 2, 3, 4, 5, 6, 'hehe', 8, 9, 10, 11, 12, 13, 'hehe', 15, 16, 'hehe', 18, 19, 20, 'hehe', 22, 23, 24, 25, 26, 'hehe', 'hehe', 29, 30, 31, 32, 33, 34, 'hehe', 36, 'hehe', 38, 39, 40, 41, 'hehe', 43, 44, 45, 46, 'hehe', 48, 'hehe', 50, 51, 52, 53, 54, 55, 'hehe', 'hehe', 58, 59, 60, 61, 62, 'hehe', 64, 65, 66, 'hehe', 68, 69, 'hehe', 'hehe', 'hehe', 'hehe', 'hehe', 'hehe', 'hehe', 'hehe', 'hehe', 'hehe', 80, 81, 82, 83, 'hehe', 85, 86, 'hehe', 88, 89, 90, 'hehe', 92, 93, 94, 95, 96, 'hehe', 'hehe', 99, 100]
>>> boom(n=77,inp='77777')
[1, 2, 3, 4, 5, 6, '77777', 8, 9, 10, 11, 12, 13, '77777', 15, 16, '77777', 18, 19, 20, '77777', 22, 23, 24, 25, 26, '77777', '77777', 29, 30, 31, 32, 33, 34, '77777', 36, '77777', 38, 39, 40, 41, '77777', 43, 44, 45, 46, '77777', 48, '77777', 50, 51, 52, 53, 54, 55, '77777', '77777', 58, 59, 60, 61, 62, '77777', 64, 65, 66, '77777', 68, 69, '77777', '77777', '77777', '77777', '77777', '77777', '77777', '77777']
尝试此操作以完成您的
boom()

def boom(n=100,inp='BOOM'):
    return [inp if i%7==0 or '7' in str(i) else i for i in range(1,n+1)]
  • 如果调用
    boom()
    时没有参数,则它将n视为101,inp视为
    “boom”
  • 如果调用了
    boom(n=x)
    ,则它将范围视为x+1,inp视为
    “boom”
  • 如果调用
    boom(inp=any_字符串)
    ,则它将范围视为101,inp视为any_字符串
  • 如果调用了
    boom(n=x,inp=any_字符串)
    ,则认为范围为x+1,inp为any_字符串

  • 输出

    [1, 2, 3, 4, 5, 6, '7 used to be here', 8, 9, 10, 11, 12, 13, '7 used to be here', 15, 16, '7 used to be here', 18, 19, 20]
    
    1
    2
    3
    4
    5
    6
    7 used to be here
    8
    9
    10
    11
    12
    13
    7 used to be here
    15
    16
    7 used to be here
    18
    19
    20
    
    >>> boom()
    [1, 2, 3, 4, 5, 6, 'BOOM', 8, 9, 10, 11, 12, 13, 'BOOM', 15, 16, 'BOOM', 18, 19, 20, 'BOOM', 22, 23, 24, 25, 26, 'BOOM', 'BOOM', 29, 30, 31, 32, 33, 34, 'BOOM', 36, 'BOOM', 38, 39, 40, 41, 'BOOM', 43, 44, 45, 46, 'BOOM', 48, 'BOOM', 50, 51, 52, 53, 54, 55, 'BOOM', 'BOOM', 58, 59, 60, 61, 62, 'BOOM', 64, 65, 66, 'BOOM', 68, 69, 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 'BOOM', 80, 81, 82, 83, 'BOOM', 85, 86, 'BOOM', 88, 89, 90, 'BOOM', 92, 93, 94, 95, 96, 'BOOM', 'BOOM', 99, 100]
    >>> boom(50)
    [1, 2, 3, 4, 5, 6, 'BOOM', 8, 9, 10, 11, 12, 13, 'BOOM', 15, 16, 'BOOM', 18, 19, 20, 'BOOM', 22, 23, 24, 25, 26, 'BOOM', 'BOOM', 29, 30, 31, 32, 33, 34, 'BOOM', 36, 'BOOM', 38, 39, 40, 41, 'BOOM', 43, 44, 45, 46, 'BOOM', 48, 'BOOM', 50]
    >>> boom(inp='hehe')
    [1, 2, 3, 4, 5, 6, 'hehe', 8, 9, 10, 11, 12, 13, 'hehe', 15, 16, 'hehe', 18, 19, 20, 'hehe', 22, 23, 24, 25, 26, 'hehe', 'hehe', 29, 30, 31, 32, 33, 34, 'hehe', 36, 'hehe', 38, 39, 40, 41, 'hehe', 43, 44, 45, 46, 'hehe', 48, 'hehe', 50, 51, 52, 53, 54, 55, 'hehe', 'hehe', 58, 59, 60, 61, 62, 'hehe', 64, 65, 66, 'hehe', 68, 69, 'hehe', 'hehe', 'hehe', 'hehe', 'hehe', 'hehe', 'hehe', 'hehe', 'hehe', 'hehe', 80, 81, 82, 83, 'hehe', 85, 86, 'hehe', 88, 89, 90, 'hehe', 92, 93, 94, 95, 96, 'hehe', 'hehe', 99, 100]
    >>> boom(n=77,inp='77777')
    [1, 2, 3, 4, 5, 6, '77777', 8, 9, 10, 11, 12, 13, '77777', 15, 16, '77777', 18, 19, 20, '77777', 22, 23, 24, 25, 26, '77777', '77777', 29, 30, 31, 32, 33, 34, '77777', 36, '77777', 38, 39, 40, 41, '77777', 43, 44, 45, 46, '77777', 48, '77777', 50, 51, 52, 53, 54, 55, '77777', '77777', 58, 59, 60, 61, 62, '77777', 64, 65, 66, '77777', 68, 69, '77777', '77777', '77777', '77777', '77777', '77777', '77777', '77777']
    

    你没有问任何关于你的“解决方案”的问题。你的解决方案有效吗?如果没有,到底出了什么问题?这很有趣,因为在“您的”解决方案中,您的函数接受输入
    n
    ,并且它从未被调用过:/如果从未使用过参数,为什么要将参数传递给
    Boom
    ?什么是
    idx
    ?它从来没有被定义过,不完全是,你仍然有数字70的情况-79@JacquesGaudinOh:facepalm:再次修复了“^^为什么
    列表(映射(…)
    ?作为一个列表理解不是更简单吗?或者更好,谢谢你!我现在更了解这个练习:)对于你的最后一部分,设置
    n=100
    而不是
    None
    inp=“BOOM”
    而不是
    None
    并避免案例检查不是更容易吗?@Tomerikoo是的,你是对的。我不知道我怎么会忽视这一点。我觉得自己很笨。谢谢你指出。马上编辑答案。