如何在列表中查找相似数字的位置

时间:2019-03-13 16:14:53

标签: python for-loop if-statement

给出一个包含某些相似元素的元素列表,我如何用Python编写代码以查找其中所有相似元素的位置?这必须使用for循环以及for循环中的if条件来完成。

list1 = [5, 90, 10, 5, 100, 5]

因此,在这种情况下,由于5是具有重复或纽带的元素,因此输出将为0、3、5。

4 个答案:

答案 0 :(得分:2)

您可以尝试使用 dataSource.read().then(function (data) { var pdf = new shield.exp.PDFDocument({ author: "PrepBootstrapsss", created: new Date() }); pdf.addPage("a4", "portrait"); pdf.table( 50, 50, data, [ { field: "Ticket", title: "Ticket#", width: 100 }, { field: "School", title: "School", width: 100 }, { field: "User", title: "User", width: 100 }, { field: "Module", title: "Module", width: 100 }, { field: "Status", title: "Status", width: 100 }, ], { margins: { top: 50, left: 50 } } ); pdf.saveAs({ fileName: repname }); }); set中查找元素的唯一集合,然后检查重复元素的索引。

尝试以下代码:

list

输出:

from collections import defaultdict

list1 = [5, 90, 10, 5, 100, 5]

set1 = set(list1)
res_dict = defaultdict(list)

for x in set1:
    for i, y in enumerate(list1):
        if x == y:
            res_dict[x].append(i)

print res_dict

答案 1 :(得分:1)

在{strong> 5 的列表理解中使用enumerate

>>> list1 = [5, 90, 10, 5, 100, 5]
>>> all_index = [i for i, j in enumerate(list1) if j == 5]
>>> all_index

输出:

[0, 3, 5]

所有元素都带有循环

list1 = [5, 90, 10, 5, 100, 5]
result = {}
for e in list1:
    result[e] = [i for i, j in enumerate(list1) if j == e]
print(result)

输出:

 {90: [1], 10: [2], 100: [4], 5: [0, 3, 5]}

答案 2 :(得分:0)

在np.where中使用将获得您想要的东西:

import numpy as np

list1 = [5, 90, 10, 5, 100, 5]

data = np.array(list1)
unique = sorted(list(set(data)))

match = {}
for i in range(len(unique)):
    match[unique[i]] = np.where(data == unique[i])[0]

print(match)
>>> {5: array([0, 3, 5]), 10: array([2]), 90: array([1]), 100: array([4])}

答案 3 :(得分:0)

仅使用for循环和if条件:

input_list = [5, 90, 100, 5, 100, 5]

elements = {}
result = []

for i, e in enumerate(input_list):
    if e in elements:
        if not elements[e][1]:
            result.append(elements[e][0])
            elements[e][1] = True
        result.append(i)
    else:
        elements[e] = [i, False]

print(sorted(result))