Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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
Python中的嵌套For循环(计算三角形的周长)_Python_Python 3.x - Fatal编程技术网

Python中的嵌套For循环(计算三角形的周长)

Python中的嵌套For循环(计算三角形的周长),python,python-3.x,Python,Python 3.x,我想计算三角形的周长。我想访问列表的具体元素,所以我使用嵌套for循环。1. 我想知道为什么周长的位置使我的代码在这两种变体中有所不同。在第二个例子中,我不明白为什么输出是240 2我想知道如何连接嵌套列表中的所有项目,因此输出应该是这样的:我尝试使用索引,但没有成功 60 150 240 第一: def function(triangle): perimeter = 0 for i in triangle: for j in i: pe

我想计算三角形的周长。我想访问列表的具体元素,所以我使用嵌套for循环。1. 我想知道为什么周长的位置使我的代码在这两种变体中有所不同。在第二个例子中,我不明白为什么输出是240 2我想知道如何连接嵌套列表中的所有项目,因此输出应该是这样的:我尝试使用索引,但没有成功

60
150
240
第一:

def function(triangle):
    perimeter = 0
    for i in triangle:
        for j in i:
            perimeter = perimeter + j
    return perimeter

function([[10,20,30], [40,50,60], [70,80,90]])
450
第二点:

def function(triangle):
    for i in triangle:
        perimeter = 0
        for j in i:
            perimeter = perimeter + j
    return perimeter

function([[10,20,30], [40,50,60], [70,80,90]])
240

1-两个代码之间的区别在于,在第一个代码中,周长在循环开始之前设置为0,然后在整个循环中更新。在第二个循环中,每次执行外部循环时都将周长值设置为0,因此上一个循环中的值不会在其中累积

2-对于循环,您可以使用以下方法:

triangles = [[10,20,30], [40,50,60], [70,80,90]]
perimeters = list(map(sum,triangles))
print(perimeters)
[60, 150, 240]

在这里,map迭代三角形的元素,并为每个元素调用sum函数。然后,使用列表可以将其转换为周长值列表。

1-两个代码之间的区别在于,在第一个代码中,周长在循环开始之前设置为0,然后在整个循环中更新。在第二个循环中,每次执行外部循环时都将周长值设置为0,因此上一个循环中的值不会在其中累积

2-对于循环,您可以使用以下方法:

triangles = [[10,20,30], [40,50,60], [70,80,90]]
perimeters = list(map(sum,triangles))
print(perimeters)
[60, 150, 240]

在这里,map迭代三角形的元素,并为每个元素调用sum函数。然后,使用list可以将其转换为周长值列表。

看起来您希望返回提供给函数的每个三角形的周长

这几乎可以用python直接表示:

def get_perimeters(triangles):
    return [sum(perimeters) for perimeters in triangles]

print(get_perimeters([[10,20,30], [40,50,60], [70,80,90]]))
输出:

[60, 150, 240]

看起来您希望返回提供给函数的每个三角形的周长

这几乎可以用python直接表示:

def get_perimeters(triangles):
    return [sum(perimeters) for perimeters in triangles]

print(get_perimeters([[10,20,30], [40,50,60], [70,80,90]]))
输出:

[60, 150, 240]

在第一个示例中,由于在开始循环通过任何三角形之前将周长设置为零,因此计算所有列出三角形的总周长

在第二个示例中,通过在外环内移动周长=0,您将在计算第一个三角形后丢弃该三角形的总数,然后在再次计算第三个三角形之前丢弃第二个三角形的总数

我会像这样重新编写您的代码:

def perimeters(geom):
    for triangle in geom:
         yield sum(triangle)
现在您有了一个生成器,您可以循环使用它,或者将其转换为列表,或者将其传递给map、filter等函数

for perimeter in perimeters([[10,20,30], [40,50,60], [70,80,90]])
    print(perimeter)

使用生成器的好处是,它可以在需要时计算数据,而不是预先进行所有计算。

在第一个示例中,由于在开始循环通过任何三角形之前将周长设置为零,因此可以计算所有列出三角形的总周长

在第二个示例中,通过在外环内移动周长=0,您将在计算第一个三角形后丢弃该三角形的总数,然后在再次计算第三个三角形之前丢弃第二个三角形的总数

我会像这样重新编写您的代码:

def perimeters(geom):
    for triangle in geom:
         yield sum(triangle)
现在您有了一个生成器,您可以循环使用它,或者将其转换为列表,或者将其传递给map、filter等函数

for perimeter in perimeters([[10,20,30], [40,50,60], [70,80,90]])
    print(perimeter)

使用生成器的好处是,它可以在您需要时计算数据,而不是预先进行所有计算。

将所有周长作为列表返回的次要修复

def function(triangle):
    perimeter_list = []
    for i in triangle:
        perimeter = 0
        for j in i:
            perimeter = perimeter + j
        perimeter_list.append(perimeter)
    return perimeter_list

function([[10,20,30], [40,50,60], [70,80,90]])
输出

[60, 150, 240]

将所有周界作为列表返回的次要修复

def function(triangle):
    perimeter_list = []
    for i in triangle:
        perimeter = 0
        for j in i:
            perimeter = perimeter + j
        perimeter_list.append(perimeter)
    return perimeter_list

function([[10,20,30], [40,50,60], [70,80,90]])
输出

[60, 150, 240]

我已经编辑了您的示例,以纠正明显的缩进错误-如果修订不正确,您应该修复它。。。第一个示例生成一个异常:NameError:未定义名称“geom”。您是否使用具有调试功能的IDE?如果是这样的话,现在是熟悉它们的绝佳时机。或者花一些时间学习内置的。在战略点打印内容通常有助于跟踪执行情况。还有一些在线可视化工具,如So抱歉疏忽!我的错误。我编辑了你的例子来纠正明显的缩进错误-如果修订不正确,你应该修复它。。。第一个示例生成一个异常:NameError:未定义名称“geom”。您是否使用具有调试功能的IDE?如果是这样的话,现在是熟悉它们的绝佳时机。或者花一些时间学习内置的。在战略点打印内容通常有助于跟踪执行情况。还有一些在线可视化工具,如So抱歉疏忽!我的错误。