如果前三个字符是数字,我会通过附加列表索引的值来成功过滤列表。尽管原始列表已连接到其他三个需要以相同模式过滤的列表,但这会过滤掉某些值。因此,我一直试图压缩列表并从那里过滤它们。尽管我是一名新编码员,所以我在能力方面遇到了死胡同。有4个输入列表和一个输出(在这里我将返回列表列表)。这是我的代码:
list0=IN[0]
list1=IN[1]
list2=IN[2]
list3=IN[3]
f_list=[]
for x in list0:
if x[0:3].isdigit():
f_list.append(x)
else:
continue
OUT=f_list
如何使list1,list2和list3过滤器中的匹配值与list0过滤器到f_list的模式相同?
感谢您的时间。
答案 0 :(得分:1)
您可以仅使用标准的Python手段来完成以下操作:
# initial sample data
IN = [['502', 'a503', '-5.1.0', 'qwe', '999', '1 1 1'],
[1, 2, 3, 4, 5, 6],
['a', 'b', 'c', 'd', 'e', 'f'],
[0, 0, 0, 0, 0, 0]]
# dictionary with the data we want to filter (single dictionary instead of 3 lists)
data_in = {idx: IN[idx] for idx in range(3)}
print(data_in)
# empty dictionary to store filtered data
data_out = {idx: list() for idx in data_in}
# processing
for pos, elem in enumerate(data_in[0]):
# condition
if elem[:3].isdigit():
# if condition is true then we treat all the data in the dictionary
for idx in data_in:
data_out[idx].append(data_in[idx][pos])
print(data_out)
输出:
{0: ['502', 'a503', '-5.1.0', 'qwe', '999', '1 1 1'], 1: [1, 2, 3, 4, 5, 6], 2: ['a', 'b', 'c', 'd', 'e', 'f']}
{0: ['502', '999'], 1: [1, 5], 2: ['a', 'e']}
使用pandas
之类的库,只需几行代码,就可以更轻松,更有效地解决此类问题。