Lam*_*aMo 2 python list indices
我有两个大小相同的列表,一个具有数据类型(连续出现):
types = ["vigi","vigi","fruits","fruits","fruits","nothing","nothing","nothing","nothing"]
Run Code Online (Sandbox Code Playgroud)
第二个列表是关于数据的:
data = ["xx","tr","kl","ut","ew","uy","lp","eq","aq"]
Run Code Online (Sandbox Code Playgroud)
从数据列表中,我知道"xx","tr"are"vigi"和"kl","ut","ew"are"fruits"等等。
我每次需要将它们data分成两个数据集:
data1 = data[indices for type "vigi"]
data2 = data[indices for the remaining (i.e. data for "fruits" and "nothing")]
Run Code Online (Sandbox Code Playgroud)
第二次将有:
data1 = data[indices for type "fruits"]
data2 = data[indices for the remaining (i.e. data for "vigi" and "nothing")]
Run Code Online (Sandbox Code Playgroud)
等等 ..
请提供任何帮助。
您可以使用zip()功能:
types = ["vigi","vigi","fruits","fruits","fruits","nothing","nothing","nothing","nothing"]
data = ["xx","tr","kl","ut","ew","uy","lp","eq","aq"]
data1 = [d for t, d in zip(types, data) if t == 'vigi']
data2 = [d for t, d in zip(types, data) if t != 'vigi']
print(data1)
print(data2)
Run Code Online (Sandbox Code Playgroud)
印刷:
['xx', 'tr']
['kl', 'ut', 'ew', 'uy', 'lp', 'eq', 'aq']
Run Code Online (Sandbox Code Playgroud)
其他版本(仅遍历列表一次):
types = ["vigi","vigi","fruits","fruits","fruits","nothing","nothing","nothing","nothing"]
data = ["xx","tr","kl","ut","ew","uy","lp","eq","aq"]
data1, data2 = [], []
for t, d in zip(types, data):
if t == 'vigi':
data1.append(d)
else:
data2.append(d)
print(data1)
print(data2)
Run Code Online (Sandbox Code Playgroud)