如何在列表中完全出现元素并使用以下信息创建另一个列表:

时间:2014-05-01 06:14:22

标签: python list

假设我有一个包含5个字符串整数['2','2','4','3']的列表,现在我想将'2'的数字添加到第二个元素表示计数的列表中有多少'2'已经发生过。我怎么能这样做?

这是我到目前为止所尝试的:

def rankbikelist(list):

list_only_rank = [] * 5
count = [] * 13
rank = '123456789'
for i in range(len(list)):
    list_only_rank += list[i][0]
    for j in range(12):
        count[j] = list_only_rank.count(rank[j])
return count

它给了我这个错误:列表分配索引超出范围

3 个答案:

答案 0 :(得分:0)

首先你有一个4个字符串整数的列表而不是5 我不确定你要做什么。
也许有点改回这个问题所以我可以尝试提供帮助。

答案 1 :(得分:0)

您的问题来自初始化列表的方式。 [] * 13实际上什么也没做。你的意思是[0] * 13;但是,尽管它适用于这种情况,it's generally bad practice

试试这个:

In [5]: L = ['2', '2', '4','3']

In [6]: answer = [0 for _ in range(10)]

In [7]: for i in L:
   ...:     answer[int(i)] += 1
   ...:     

In [8]: answer
Out[8]: [0, 0, 2, 1, 1, 0, 0, 0, 0, 0]

答案 2 :(得分:0)

您可以使用Counter将计数作为字典获取并将其转换为列表:

from collections import Counter
items = ['2', '2', '4','3']
counts = Counter(items)
newlist = [ counts.get(str(x), 0) for x in range(10) ]
print newlist

给出:

[0, 0, 2, 1, 1, 0, 0, 0, 0, 0]