【发布时间】:2021-07-29 06:06:55
【问题描述】:
我正在尝试在列表中打印下面给出的 for 循环的输出,但得到以下结果:
import math
S= [(1,2),(3,4),(-1,1),(6,-7),(0, 6),(-5,-8),(-1,-1),(6,0),(1,-1)]
p,q = 3,-4
dist = []
for x,y in S:
dist=[]
cos_dist = math.acos((x*p + y*q)/((math.sqrt(x**2 + y**2))*(math.sqrt(p**2 + q**2))))
dist.append(cos_dist)
print(dist)
这里的输出是:
[2.0344439357957027]
[1.8545904360032246]
[2.9996955989856287]
[0.06512516333438509]
[2.498091544796509]
[1.2021004241368467]
[1.4288992721907328]
[0.9272952180016123]
[0.14189705460416438]
但我希望它是:
[2.0344439357957027,1.8545904360032246,2.9996955989856287,0.06512516333438509,2.498091544796509,1.2021004241368467,1.4288992721907328,0.9272952180016123,0.14189705460416438]
我尝试过使用
print(','.join(dist))
但它说
TypeError: sequence item 0: expected str instance, float found
如何获得我想要的输出?
【问题讨论】:
-
您在循环内再次重新分配
dist。每次,前一个列表都会被丢弃。所以你只得到1个元素。从循环中删除dist=[]