基于条件拆分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')

我有一个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'),('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。