给出一个包含某些相似元素的元素列表,我如何用Python编写代码以查找其中所有相似元素的位置?这必须使用for循环以及for循环中的if条件来完成。
list1 = [5, 90, 10, 5, 100, 5]
因此,在这种情况下,由于5是具有重复或纽带的元素,因此输出将为0、3、5。
答案 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))