Skip to main content
 首页 » 编程设计

python之扭曲列表列表

2025年05月04日36小虾米

我有以下数据结构:

 a= [ 
       [u'happy', u'thursday', u'from', u'my', u'big', u'sweater', u'and', u'this',  
        u'ART', u'@', u'East', u'Village', u',', u'Manhattan', u'https',  
        u':', u'//t.co/5k8PUInmqK'], 
       [u'RT', u'@', u'MayorKev', u':', u'IM', u'SO', u'HYPEE', u'@', u'calloutband',  
        u'@', u'FreakLikeBex', u'#', u'Callout', u'#', u'TheBitterEnd', u'#', 
        u'Manhattan', u'#', u'Music', u'#', u'LiveMusic', u'#', u'NYC',  
         u'#', u'NY', u'#', 
        u'Jersey', u'#', u'NJ', u'http', u':', u'//t.co/0\u2026'] 
     ] 

在我看来,它是一个字符串列表的列表,除了它被一对 [ ] 而不是 ( ) 包围。 [ ] 对是系统生成的结果:

a = [nltk.tokenize.word_tokenize(tweetL) for tweetL in tweetList] 

最终,我需要将这个结构展平为一个字符串列表,并对单词进行一些正则表达式和计数操作,但 [ ] 的外部对阻止了这一点。

我尝试使用:

list.extend() 

和

ll = len(a) 
for n in xrange(ll): 
    print 'list - ', a[n], 'number = ', n 

但仍然得到相同的结果:

list - [ number =  1 
list - u number =  2 
list - ' number =  3 
list - h number =  4 
list - a number =  5 
list - p number =  6 
list - p number =  7 

如您所见,代码将字符串的每个符号视为列表的元素,而不是将整个字符串视为一个元素

可以高效地完成什么?

试过这个:

flat_list = [i for sublist in a for i in sublist]  
for i in flat_list: 
    print 'element - ', i 

结果(部分):

element -  h 
element -  a 
element -  p 
element -  p 
element -  y 
element -    
element -  t 

请您参考如下方法:

我不确定我是否完全理解您的问题,如果我离题太远请告诉我,但是,根据您提供的输入,您有一个列表列表。不仅如此,如果那是你一直拥有的结构,你可以只取出你需要的东西

a = a[0] 

那只会给你一个列表。

然后你可以简单地迭代为:

for i in a: 
    print(i) 

但是,如果这只是一个示例,而您实际上有这样的东西:

[[],[],[],[]] 

如果您想将其完全扁平化为一个列表,那么您要使用的推导式是这样的:

flat_list = [i for sublist in a for i in sublist]  

然后你只需要一个列表:[1, 2, 3, 4]

然后你只需迭代你想要的:

for i in flat_list: 
    print(i) 

或者,如果您还想打印出索引,那么您可以这样做:

for i, v in enumerate(flat_list): 
    print("{}: {}".format(i, v)) 

只是关于您对 extend 的使用的最后评论。

extend 作为方法说明的帮助:

extend(...) 
    L.extend(iterable) -- extend list by appending elements from the iterable 

因此,它的用法“扩展”了列表,就像这个例子所做的那样:

a = [1, 2, 3] 
b = [4, 5, 6] 
a.extend(b) 
# a will now be [1, 2, 3, 4, 5, 6] 

运行你的输入:

a = [[u'happy', u'thursday', u'from', u'my', u'big', u'sweater', u'and', u'this', u'ART', u'@', u'East', u'Village', u',', u'Manhattan', u'https', u':', u'//t.co/5k8PUInmqK'], [u'RT', u'@', u'MayorKev', u':', u'IM', u'SO', u'HYPEE', u'@', u'calloutband', u'@', u'FreakLikeBex', u'#', u'Callout', u'#', u'TheBitterEnd', u'#', u'Manhattan', u'#', u'Music', u'#', u'LiveMusic', u'#', u'NYC', u'#', u'NY', u'#', u'Jersey', u'#', u'NJ', u'http', u':', u'//t.co/0\u2026']] 

在我的代码中,产生了这个输出:

0: happy 
1: thursday 
2: from 
3: my 
4: big 
5: sweater 
6: and 
7: this 
8: ART 
9: @ 
10: East 
11: Village 
12: , 
13: Manhattan 
14: https 
15: : 
16: //t.co/5k8PUInmqK