[英]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.