2015-03-03 3 views
0

Я хочу присвоить имена моих изображений другой строке. Ниже я описал проблему.Назначить массив изображений строке

num=[10,20,30,40,50,60,.....500] 
for i in range(len(num)): 
    img[i]=str(num[i])+'_image_plane_XX_YY.fits' 

так что после этого цикла он должен дать мне,

img0='10_image_plane_XX_YY.fits' 
img1='20_image_plane_XX_YY.fits' 
.... 
img499='500_image_plane_XX_YY.fits' 

это означает, img0 равно имя изображения 10_image_plane_XX_YY.fits, img1 равно имя изображения 20_image_plane_XX_YY.fits и т.д. Так что я просто нужно использовать img0, img1, .. для моих соответствующих изображений в дальнейшем анализе. Но, когда я запускаю этот цикл, это дает мне следующее сообщение об ошибке

TypeError: 'str' object does not support item assignment 

Пожалуйста, дайте мне знать любое гуманный для этого.

Заранее благодарен!

Приветствия,

-Viral

ответ

2

Для того, что я думаю, что вы пытаетесь сделать, понимание списка кажется более естественным.

num=[10,20,30,40,50,60] # I truncated your array for brevity 
img = [str(i)+'_image_plane_XX_YY.fits' for i in num] 

Это построит img как массив с вашими собранных строк. Например:

>>> num=[10,20,30,40,50,60] 
>>> img = [str(i)+'_image_plane_XX_YY.fits' for i in num] 
>>> img[0] 
'10_image_plane_XX_YY.fits' 
>>> img[3] 
'40_image_plane_XX_YY.fits' 
+0

Спасибо rchang. Это именно то, чего я хотел. –

0

Там только одна причина: ваш img является строкой.

Этот err msg означает: строки неизменяемы, поэтому вы не можете изменить их символы на месте.

Я думаю, что вы img должен быть списком или чем-то подобным. Plz проверить ваш код.

0

Проблема заключается в img[i], поскольку вы пытаетесь присвоить строку индекса строки и - как ошибка говорит вам, - строки не поддерживают назначение элемента.

Вы можете использовать Dict вместо:

img = {} 
num=[10,20,30,40,50,60,.....500] 
for i in range(len(num)): 
    img[i]=str(num[i])+'_image_plane_XX_YY.fits' 

Так что IMG становится:

{ 0:'10_image_plane_XX_YY.fits', 
    1: '20_image_plane_XX_YY.fits', 
    .... 
    499: '500_image_plane_XX_YY.fits' 
} 

и вы можете назвать имя изображения, как:

>>> img[0] 
'10_image_plane_XX_YY.fits' 

>>> img[1] 
'20_image_plane_XX_YY.fits' 

Однако, если вы не Не нужно ничего, кроме целого в качестве ключа, вы, вероятно, должны использовать понимание списка как suggested by rchang.

Смежные вопросы