Python 提取二维列表中特定列的不同元素数
我有一个2D元素列表,需要提取:Python 提取二维列表中特定列的不同元素数,python,list,Python,List,我有一个2D元素列表,需要提取: 特定列中不同元素的数目 来自该特定列的那些不同元素的名称 在这个列表中,我想检查第4列的例子list[3]。其思想是提取ARC和REP的条目数,以及ARC和REP的名称。 到目前为止,我已经做到了以下几点: 转换“矩阵”以获得所有元素 newlist = zip(*mylist)[3] 在newlist 我只是想知道是否有更有效的方法将这些元素添加到集合中: newlist = [u[3].strip() for u in list] s = set(new
list[3]
。其思想是提取ARC
和REP
的条目数,以及ARC
和REP
的名称。
到目前为止,我已经做到了以下几点:
newlist = zip(*mylist)[3]
newlist
我只是想知道是否有更有效的方法将这些元素添加到集合中:
newlist = [u[3].strip() for u in list]
s = set(newlist)
然后len(s)将是唯一元素的数量,元素本身就是集合的成员
也允许一次性完成:
>>> s = set([u[3].strip() for u in list])
>>> s
set([u'REP', u'ARC'])
如果您仍然需要循环处理这些值,您也可以跳过
zip()
,在一个简单的循环中进行处理:
unique = set()
all = []
for row in mylist:
value = row[3].strip()
unique.add(value)
all.append(value)
或者更好的方法是,在循环中直接使用value
执行任何您想执行的操作,而不是附加到all
<代码>唯一生成一组唯一值
通过使用显式循环,我还潜入了一个
str.strip()
调用来规范化列;这里的空白量有很多变化。首先,您可能需要调整列表的构建方式。该列中有大量可变空白;您可能需要添加一个str.strip()
调用。@MartijnPieters当然,这会有帮助!顺便说一下,不要将list
用作变量名。您正在屏蔽内置类型。@MartijnPieters谢谢,我现在已经更新了代码
unique = set()
all = []
for row in mylist:
value = row[3].strip()
unique.add(value)
all.append(value)