繁体   English   中英

对list'int'元素执行算术运算

[英]Performing arithmetic on list 'int' element

我试图运行一个代码,它将在列表中找到列表的第二个元素,并对该段代码执行算术,但在尝试运行所述代码时(在下面给出)

data_set_10 = [['A', 0, 0, 'E'], ['A', 0, 1, 'N'], ['A', 2, 2, 'S'], ['A', 2, 3, 'W'], 
           ['B', 0, 3, 'E'], ['B', 0, 2, 'W'], ['B', 5, 2, 'N'],
           ['C', 1, 0, 'N'], ['C', 3, 2, 'E'],
           ['D', 3, 0, 'W']]
def draw_icons(data_set):
    for group in data_set:
        for item in group[1]:
            print(-375 + (item * 75))

draw_icons(data_set_10)

我收到了错误

文件“C:/Users/Chris/Downloads/test_draw_icons.py”,第9行,在draw_icons中为组[1]中的项目:TypeError:'int'对象不可迭代

这显然与代码的一部分有关

for item in group[1]

我该怎么做才能使程序对列表中的项目执行算术运算? 我将举例说明我正在寻找的输出:

-375
-375
-225
-225

根据列表中每个列表的第二个元素依此类推。

for item in group[1]:

group[1]是你的int 你试图迭代一个int 这显然不起作用。

你只想要:

for group in data_set:
    print(-375 + (group[1] * 75))

由于每个组是4个项目的列表,通过已经使用group[1] ,您正在选择group的第二个项目,这是一个int因此没有任何内容可以迭代。 我认为这是你正在寻找的行为

def draw_icons(data_set):
    for group in data_set:
        item = group[1]:
        print(-375 + (item * 75))

我该怎么做才能使程序对列表中的项目执行算术运算?

只需删除该行并替换为item = group[1]并相应地重新启动,以便您的代码看起来像

def draw_icons(data_set):
    for group in data_set:
        item = group[1]
        print(-375 + (item * 75))

或者,您可以转置2D列表,以便简单的下标返回第二列元素

for item in zip(*data_set_10)[1]:
    print(-375 + (item * 75))

解决方案非常简单如下:

data_set_10 = [['A', 0, 0, 'E'], ['A', 0, 1, 'N'], ['A', 2, 2, 'S'], ['A', 2, 3, 'W'], 
       ['B', 0, 3, 'E'], ['B', 0, 2, 'W'], ['B', 5, 2, 'N'],
       ['C', 1, 0, 'N'], ['C', 3, 2, 'E'],
       ['D', 3, 0, 'W']]

def draw_icons(data_set):
    for group in data_set:
        print(-375+(group[1]*75))

draw_icons(data_set_10)

我们得到的输出是:

-375
-375
-225
-225
-375
-375
0
-300
-150
-150

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM