基于条件拆分Python列表
我有一个python列表,如下所示:基于条件拆分Python列表,python,list,python-2.7,Python,List,Python 2.7,我有一个python列表,如下所示: mylist = [('Item A','CA','10'),('Item B','CT','12'),('Item C','CA','14')] 我想根据第2列=='CA'将其拆分为一个列表 期望输出: filtered_list = [('Item A','CA','10'),('Item C','CA','14')] 我的尝试:显然这里有一些问题 mylist = [('Item A','CA','10'),('Item B','CT','12')
mylist = [('Item A','CA','10'),('Item B','CT','12'),('Item C','CA','14')]
我想根据第2列=='CA'将其拆分为一个列表
期望输出:
filtered_list = [('Item A','CA','10'),('Item C','CA','14')]
我的尝试:显然这里有一些问题
mylist = [('Item A','CA','10'),('Item B','CT','12'),('Item C','CA','14')]
filtered_list[]
for row in mylist:
if [row:1] = 'CA'
filtered_list.append(mylist[row])
您可以使用列表理解来实现这一点:
mylist = [('Item A','CA','10'),('Item B','CT','12'),('Item C','CA','14')]
filtered_list = [item for item in mylist if item[1]=='CA']
为此,可以按以下方式使用python的过滤器
filtered_list = list(filter(lambda x: x[1] =='CA',mylist)))
我不想写我自己的答案,而是想指出你的解释哪里出错了
mylist = [('Item A','CA','10'),('Item B','CT','12'),('Item C','CA','14')]
filtered_list[] ## I believe this was typo
for row in mylist:
if [row:1] = 'CA' ## this where you missed it!
filtered_list.append(mylist[row])
我已经更正了你的代码
mylist = [('Item A','CA','10'),('Item B','CT','12'),('Item C','CA','14')]
filtered_list = [] ## list created
for row in mylist:
if row[1] == 'CA': ## == for if condition and :
filtered_list.append(row) ## appending the row if row[1] == "CA"
print filtered_list
是的,有一些问题。首先,您使用元组作为切片值,然后您不使用比较运算符
==
,再次使用元组作为索引。将其与我自己的代码一起查看非常有用,谢谢!这是一种低效的做事方式吗?不,除非你担心内存和执行时间。这里其他人提供的答案是编写相同功能的简明方法。我认为您应该使用自己的代码,因为调试它很容易。如果您计划使用任何其他代码,那么请确保您了解它是如何完成的,然后继续:)如果已存在某个特定条件,如果已存在类似条目,是否可以不在新列表中包含值?例如,我只想要A项的一个条目,其中第3列是14。