![](/img/trans.png)
[英]How to create a 2D array in Python where each column has a different and random number of elements
[英]Extracting the number of different elements of a specific column in a 2D list
我有一个2D元素列表,需要提取:
mylist=[[1.0, u'1', u'COMPLETED', u' ARC', 30.0, 1.0, u'06/02/2014 09:20:18',u'2 CCW'],
[1.0, u'1', u'COMPLETED', u' ARC ', 30.0, 1.0, u'04/02/2014 09:15:56',u'1 CW'],
[1.0, u'1', u'COMPLETED', u' ARC ', 30.0, 1.0, u'07/02/2014 12:15:56',u'1 CW'],
[1.0, u'1', u'COMPLETED', u' REP', 30.0, 1.0, u'06/02/2014 09:20:18',u'2 CCW'],
[1.0, u'1', u'COMPLETED', u' REP', 30.0, 1.0, u'12/02/2014 09:20:18',u'1 CW'],
[1.0, u'1', u'COMPLETED', u' REP', 30.0, 1.0, u'12/02/2014 09:20:18',u'1 CW']]
在此列表中,我想检查实例列号4 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
。 unique
建立一组唯一的值。
通过使用显式循环,我还潜入了str.strip()
调用以规范化该列; 您那里的空白量有很多变化。 您可能首先要调整构建列表的方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.