directory="/resources/data"
negative='Negative'
negative_file_path=os.path.join(directory,negative)
negative_files=[os.path.join(negative_file_path,file) for file in os.listdir(negative_file_path) if file.endswith(".jpg")]
negative_files.sort()
positive="Positive"
positive_file_path=os.path.join(directory,positive)
positive_files=[os.path.join(positive_file_path,file) for file in os.listdir(positive_file_path) if file.endswith(".jpg")]
positive_files.sort()
我想创建另一个列表all_files,以使偶数索引包含包含positive_files的图像的路径,而奇数索引包含包含负文件的路径。 预期输出:
all_files[0]=positive_files[0] //image because 0th index of all_files is even.
all_files[1]=negative_files[0] //image because 1st index of all_files is odd.
all_files[2]=positive_files[1] //image because 2nd index of all_files is even.
all_files[3]=negative_files[1] //image because 3rd index of all_files is odd.
以此类推...
a=[10,20,30]
b=[50,60,70,80,90,100,200]
m=len(a)
n=len(b)
l=m+n
i=j=k=0
c=[]
while i< l:
if i%2==0:
c[i]=a[j]
j=j+1
else:
c[i]=b[k]
k=k+1
print(c)
错误:索引超出范围。
答案 0 :(得分:0)
您的代码有多个问题。
您不能在列表上呼叫a[i]
,因为您的列表当前为空。您需要使用list.append()
函数将项目添加到列表中。
您不会在while循环中递增i
,这会触发无限循环。
如果正负文件的长度相同,则代码将运行。否则,您需要其他一些逻辑来填补索引的空白。您可以检查当前的j
或k
是否分别大于l
或m
,然后将较大列表中的所有其余元素添加到最终列表中。
这是一种可能,根据您的使用情况可能会有所不同。
答案 1 :(得分:0)
您想要的奇偶索引目标似乎不适用于不同的长度(这是导致错误的原因),并且忽略了使用Python轻松实现的更复杂的结构。
看看zip
函数,并考虑建立一个元组列表。
答案 2 :(得分:0)
假设两个列表的长度相同
import itertools
all_files = list(itertools.chain.from_iterable(zip(positive_files, negative_files)))