我有一个图像列表,我想将它们的名字分成'='符号。
e.g。从:
'set_one-C:\Users\Documents\stim\01=aa.png'
到
'aa.png'
我试图创建一个'for循环'来遍历列表中的每个项目并依次拆分名称。尽管控制台中没有错误,但名称似乎并未拆分。
这是我的代码和循环:
imgList1 = glob.glob(os.path.join('C:\Users\Documents\stim','*.png'))
set_one = [visual.ImageStim(win, img, name='set_one-' + img) for img in imgList1[:8]]
set_two = [visual.ImageStim(win, img, name='set_two-' + img) for img in imgList1[8:16]]
sets = [set_one, set_two]
a1 = sets[0][0]
a2 = sets[0][1]
a3 = sets[0][2]
a4 = sets[0][3]
a5 = sets[0][4]
a6 = sets[0][5]
a7 = sets[0][6]
a8 = sets[0][7]
list = [a1,a2,a3,a4,a5,a6,a7,a8]
print a1
for item in list:
item = item.name.split('=')[1]
print a1
>>ImageStim(autoLog=True, color=array([ 1., 1., 1.]), colorSpace='rgb', contrast=1.0, depth=0, flipHoriz=False, flipVert=False, image=str(...), interpolate=False, mask=None, maskParams=None, name=str(...), opacity=1.0, ori=0.0, pos=array([ 0., 0.]), size=array([ 18.36534845, 11.47834278]), texRes=128, units='deg', win=Window(...))
>>ImageStim(autoLog=True, color=array([ 1., 1., 1.]), colorSpace='rgb', contrast=1.0, depth=0, flipHoriz=False, flipVert=False, image=str(...), interpolate=False, mask=None, maskParams=None, name=str(...), opacity=1.0, ori=0.0, pos=array([ 0., 0.]), size=array([ 18.36534845, 11.47834278]), texRes=128, units='deg', win=Window(...))
我知道我可以像这样单独分割它们:
a1 = a1.name.split('=')[1]
a2 = a2.name.split('=')[1] etc..
print a1
>>aa.png
但是我需要自动执行此操作,因为我需要进行分割。我不确定为什么for循环不会从列表中拆分每个图像的名称。
谢谢, 史蒂夫
答案 0 :(得分:1)
item = item.name.split('=')[1]
这不起作用....你想要这个:
new_list = []
for item in list:
new_list.append(item.name.split('=')[1])
print(new_list)
因为您没有在for循环中更改list
。您只是在更改项目,但如果有意义的话,您不会在列表中对其进行编辑。
另一种解决方法如下:
for i, item in enumerate(list):
list[i] = item.name.split('=')[1]
编辑:
看看你想如何保持对a1,a2,...,a8的引用无论出于何种原因......这就是为什么你不能用我们现在拥有的东西来做。字符串是不可变对象,一旦你改变它就会创建一个新对象,当然你可以将它重新分配给你的变量,但这不是重点。如果你想保留引用,那么你应该使用一个字典,其中键是你的变量名,值很好。
list_of_var = ['a1','a2','a3'] # and so on
list = [a1,a2,a3,a4,a5,a6,a7,a8]
new_dict = {key: value.name.split("=")[1] for value, key in zip(list,list_of_var)}
#call it like new_dict["a1"]
但是在一天结束的时候,如果你已经没有使用字典进行a1通话,那么你唯一能做到的就是你的问题。