您可以在下面的代码中看到我正在创建一个字符串列表,这些字符串基本上形成planes
列表定义的多个圈。该问题与hover
列表相关联。基本上,如果click_x
和click_y
位于字符串定义的特定区域内,那么它应该替换该区域内的所有字符串,但出于某种原因,text.replace(...)
不做任何事情,我的意思是在"替换"之后,hover
列表仍然是相同的。所有帮助表示赞赏。
此外,由于某种原因我收到了TypeError,因此我无法使用np.where。
import numpy as np
planes = [2, 3, 4, 5]
edge = planes[-1]
x = np.linspace(-edge, edge, 50)
y = np.linspace(-edge, edge, 50)
regions = []
hover = []
# Normal Display
for i in x:
row = []
text_row = []
for j in y:
# TODO: Make what_region function
if np.sqrt(i ** 2 + j ** 2) < planes[0]:
row.append(7) # <- Arbitrary number to adjust color
text_row.append('Region 1')
if np.sqrt(i ** 2 + j ** 2) > planes[-1]:
row.append(5) # <- Arbitrary number to adjust color
text_row.append('Region {}'.format(len(planes) + 1))
for k in range(len(planes) - 1):
if planes[k] < np.sqrt(i ** 2 + j ** 2) < planes[k + 1]:
row.append(k * 3) # <- Arbitrary number to adjust color
text_row.append('Region {}'.format(k + 2))
regions.append(row)
hover.append(text_row)
# indices = np.where(np.array(hover) == "Region 1")
# for a in range(len(indices[0])):
# hover[indices[0][a]][indices[1][a]] = ("New Region")
click_x = np.random.uniform(-planes[-1], planes[-1])
click_y = np.random.uniform(-planes[-1], planes[-1])
# Change graph on Click TODO: Not filling region correctly (MUST FIX)
if np.sqrt(click_x ** 2 + click_y ** 2) < planes[0]:
print('1', True)
for row_ in hover:
for text in row_:
print(text)
text.replace('Region 1', 'New Region')
if np.sqrt(click_x ** 2 + click_y ** 2) > planes[-1]:
print('2', True)
for row_ in hover:
for text in row_:
print(text)
text.replace('Region {}'.format(len(planes)+1), 'Newer Region')
for k in range(len(planes) - 1):
if planes[k] < np.sqrt(click_x ** 2 + click_y ** 2) < planes[k + 1]:
print('3', True)
for row_ in hover:
for text in row_:
print(text)
text.replace('Region {}'.format(k+2), 'Newest Region')
print(hover)
答案 0 :(得分:0)
python中的字符串是不可变的。这意味着它们不能被编辑,只能被替换。
x = "silly sam"
x.replace("silly", "smart")
x
仍为"silly sam"
,因为字符串的替换版本未分配给变量,因此被丢弃。
x = "silly sam"
x = x.replace("silly", "smart")
现在x
的值为"smart"