如何将列表筛选为三个子列表?

2024-07-03 05:57:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为事务\u clean的列表,从空白等中清除,如下所示:

['Edith Mcbride', '$1.21', 'white', '09/15/17', 'Herbert Tran', '$7.29', 'white&blue', '09/15/17', 'Paul Clarke', '$12.52', 'white&blue', '09/15/17', 'Lucille Caldwell', '$5.13', 'white', '09/15/17', 'Eduardo George', '$20.39', 'white&yellow', '09/15/17', 'Danny Mclaughlin', '$30.82', 'purple', '09/15/17', 'Stacy Vargas', '$1.85', 'purple&yellow', '09/15/17', 'Shaun Brock', '$17.98', 'purple&yellow', '09/15/17', 'Erick Harper', '$17.41', 'blue', '09/15/17', 'Michelle Howell', '$28.59', 'blue', '09/15/17', 'Carroll Boyd', '$14.51', 'purple&blue', '09/15/17', 'Teresa Carter', '$19.64', 'white', '09/15/17', 'Jacob Kennedy', '$11.40', 'white&red', '09/15/17', 'Craig Chambers', '$8.79', 'white&blue&red', '09/15/17', 'Peggy Bell', '$8.65', 'blue', '09/15/17', 'Kenneth Cunningham', '$10.53', 'green&blue', '09/15/17', 'Marvin Morgan', '$16.49', 'green&blue&red', '09/15/17', 'Marjorie Russell', '$6.55', 'green&blue&red', '09/15/17', 'Israel Cummings', '$11.86', 'black', '09/15/17', 'June Doyle', '$22.29', 'black&yellow', '09/15/17', 'Jaime Buchanan', '$8.35', 'white&black&yellow', '09/15/17', 'Rhonda Farmer', '$2.91', 'white&black&yellow', '09/15/17', 'Darren Mckenzie', '$22.94', 'green', '09/15/17', 'Rufus Malone', '$4.70', 'green&yellow', '09/15/17', 'Hubert Miles', '$3.59', 'green&yellow&blue', '09/15/17', 'Joseph Bridges', '$5.66', 'green&yellow&purple&blue', '09/15/17', 'Sergio Murphy', '$17.51', 'black', '09/15/17', 'Audrey Ferguson', '$5.54', 'black&blue', '09/15/17', 'Edna Williams', '$17.13', 'black&blue', '09/15/17', 'Randy Fleming', '$21.13', 'black', '09/15/17', 'Elisa Hart', '$0.35', 'black&purple', '09/15/17', 'Ernesto Hunt', '$13.91', 'black&purple', '09/15/17', 'Shannon Chavez', '$19.26', 'yellow', '09/15/17', 'Sammy Cain', '$5.45', 'yellow&red', '09/15/17', 'Steven Reeves', '$5.50', 'yellow', '09/15/17', 'Ruben Jones', '$14.56', 'yellow&blue', '09/15/17', 'Essie Hansen', '$7.33', 'yellow&blue&red', '09/15/17', 'Rene Hardy', '$20.22', 'black', '09/15/17', 'Lucy Snyder', '$8.67', 'black&red', '09/15/17', 'Dallas Obrien', '$8.31', 'black&red', '09/15/17', 'Stacey Payne', '$15.70', 'white&black&red', '09/15/17', 'Tanya Cox', '$6.74', 'yellow', '09/15/17', 'Melody Moran', '$30.84', 'yellow&black', '09/15/17', 'Louise Becker', '$12.31', 'green&yellow&black', '09/15/17', 'Ryan Webster', '$2.94', 'yellow', '09/15/17', 'Justin Blake', '$22.46', 'white&yellow', '09/15/17', 'Beverly Baldwin', '$6.60', 'white&yellow&black', '09/15/17', 'Dale Brady', '$6.27', 'yellow', '09/15/17', 'Guadalupe Potter', '$21.12', 'yellow', '09/15/17', 'Desiree Butler', '$2.10', 'white', '09/15/17', 'Sonja Barnett', '$14.22', 'white&black', '09/15/17', 'Angelica Garza', '$11.60', 'white&black', '09/15/17', 'Jamie Welch', '$25.27', 'white&black&red', '09/15/17', 'Rex Hudson', '$8.26', 'purple', '09/15/17', 'Nadine Gibbs', '$30.80', 'purple&yellow', '09/15/17', 'Hannah Pratt', '$22.61', 'purple&yellow', '09/15/17', 'Gayle Richards', '$22.19', 'green&purple&yellow', '09/15/17', 'Stanley Holland', '$7.47', 'red', '09/15/17', 'Anna Dean', '$5.49', 'yellow&red', '09/15/17', 'Terrance Saunders', '$23.70', 'green&yellow&red', '09/15/17', 'Brandi Zimmerman', '$26.66', 'red', '09/15/17', 'Guadalupe Freeman', '$25.95', 'green&red', '09/15/17', 'Irving Patterson', '$19.55', 'green&white&red', '09/15/17', 'Karl Ross', '$15.68', 'white', '09/15/17', 'Brandy Cortez', '$23.57', 'white&red', '09/15/17', 'Mamie Riley', '$29.32', 'purple', '09/15/17', 'Mike Thornton', '$26.44', 'purple', '09/15/17', 'Jamie Vaughn', '$17.24', 'green', '09/15/17', 'Noah Day', '$8.49', 'green', '09/15/17', 'Josephine Keller', '$13.10', 'green', '09/15/17', 'Tracey Wolfe', '$20.39', 'red', '09/15/17', 'Ignacio Parks', '$14.70', 'white&red', '09/15/17', 'Beatrice Newman', '$22.45', 'white&purple&red', '09/15/17', 'Andre Norris', '$28.46', 'red', '09/15/17', 'Albert Lewis', '$23.89', 'black&red', '09/15/17', 'Javier Bailey', '$24.49', 'black&red', '09/15/17', 'Everett Lyons', '$1.81', 'black&red', '09/15/17', 'Abraham Maxwell', '$6.81', 'green', '09/15/17', 'Traci Craig', '$0.65', 'green&yellow', '09/15/17', 'Jeffrey Jenkins', '$26.45', 'green&yellow&blue', '09/15/17', 'Merle Wilson', '$7.69', 'purple', '09/15/17', 'Janis Franklin', '$8.74', 'purple&black', '09/15/17', 'Leonard Guerrero', '$1.86', 'yellow', '09/15/17', 'Lana Sanchez', '$14.75', 'yellow', '09/15/17', 'Donna Ball', '$28.10', 'yellow&blue', '09/15/17', 'Terrell Barber', '$9.91', 'green', '09/15/17', 'Jody Flores', '$16.34', 'green', '09/15/17', 'Daryl Herrera', '$27.57', 'white', '09/15/17', 'Miguel Mcguire', '$5.25', 'white&blue', '09/15/17', 'Rogelio Gonzalez', '$9.51', 'white&black&blue', '09/15/17', 'Lora Hammond', '$20.56', 'green', '09/15/17', 'Owen Ward', '$21.64', 'green&yellow', '09/15/17', 'Malcolm Morales', '$24.99', 'green&yellow&black', '09/15/17', 'Eric Mcdaniel', '$29.70', 'green', '09/15/17', 'Madeline Estrada', '$15.52', 'green', '09/15/17', 'Leticia Manning', '$15.70', 'green&purple', '09/15/17', 'Mario Wallace', '$12.36', 'green', '09/15/17', 'Lewis Glover', '$13.66', 'green&white', '09/15/17', 'Gail Phelps', '$30.52', 'green&white&blue', '09/15/17', 'Myrtle Morris', '$22.66', 'green&white&blue', '09/15/17']

这些是交易记录:名称、成本、产品、日期。我的工作是创建三个列表(customer、sales、thread_Seld(这是颜色)),并将给定的列表过滤到这三个列表中。因此,名称只包含在客户列表中,成本只包含在销售列表中,产品只包含在销售列表中。我不需要日期

我编写了这样一个代码:

customers = []
sales = []
thread_sold = []


for item in transactions_clean:
  customers.append(item[0])
  sales.append(item[1])
  thread_sold.append(item[2])

print(sales)

我原以为按顺序索引项目会有帮助,但没有成功。我也不知道如何跳过日期


Tags: clean列表greenbluereditemthreadblack
3条回答

假设列表中的顺序是一致的,则可以使用切片。切片的工作方式如下:from:to:step_size

end_idx = len(transactions_clean)    
customers = transactions_clean[0:end_idx:4]
sales = transactions_clean[1:end_idx:4]
thread_sold = transactions_clean[2:end_idx:4]

刚才看到T先生的评论,你可以省略结尾:

customers = transactions_clean[0::4]
sales = transactions_clean[1::4]
thread_sold = transactions_clean[2::4]

当您通过for item in transactions_clean:对列表进行迭代时,您会得到每个列表的项目,因此像item[1]这样对它们进行索引只会得到字符串。如果订单总是像客户一样->;销售->;如果售出,您可以执行以下操作:

customers = []
sales = []
thread_sold = []
for i in range(len(transactions_clean) // 3):
    customers.append(transactions_clean[i])
    sales.append(transactions_clean[i + 1])
    thread_sold.append(transactions_clean[i + 2])
    

您可以使用一行代码解决问题:

customers, sales, thread_sold = [transactions_clean[i::4] for i in range(3)]

列表理解创建一个包含三个元素的列表;每个元素都是从transactions_clean创建的列表,从第i个元素开始,每4个元素只取一个元素。这样,当i=0只得到名称时,i=1只得到价格,而i=2只得到颜色

然后,通过列表理解创建的列表被解包到三个必需的列表中

相关问题 更多 >