首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两个列表中常见元素的打印索引

两个列表中常见元素的打印索引
EN

Stack Overflow用户
提问于 2021-06-24 04:25:10
回答 3查看 339关注 0票数 0

我试图为x和y中常见的元素打印一个索引列表,因此在下面的示例中,[5,6,8,9,11]在每个元素中都是常见的,因此我希望输出是公共元素的索引列表,因此在本例中是[0,1,3,4,6]。我尝试了下面的代码,但我只得到了一个空的列表[]作为我的输出,我不知道从这里去哪里。任何帮助都将不胜感激。

代码语言:javascript
运行
复制
x= [5,6,7,8,9,10,11,12]
y=[5,6,8,9,11]

y=[]
for i in range(0,len(x)):
    if x[i] in y:
        y.append(i)
print(y)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-06-24 04:29:00

首先-你是在凌驾y。所以你把x[]做比较。

此外,您正在进行更新y,同时将其与循环中的它进行比较。如果我见过的话就容易出错..。

接下来,为什么不使用一个简单的清单-理解?

代码语言:javascript
运行
复制
indices_of_stuff_in_x_thats_also_in_y = [i for i, x_ in enumerate(x) if x_ in y]
print(indices_of_stuff_in_x_thats_also_in_y)
# [0, 1, 3, 4, 6]

最后一点--请注意,您最初的定义听起来有点对称(“x和y中常见元素的索引列表”)。但它不是也不可能因为你说的是指数..。

票数 3
EN

Stack Overflow用户

发布于 2021-06-24 04:38:42

您可以使用enumerate函数来获取公共元素的索引。

您可以使用.index(),但这可能会导致问题,因为它获取提供的元素的第一个外观的索引。

这是一个有效的代码。

代码语言:javascript
运行
复制
list1 = [5,6,7,8,9,10,11,12]
list2 = [5,6,8,9,11]
list3=[j for j,i in enumerate(list1) if  i in list2]
print(list3)
票数 1
EN

Stack Overflow用户

发布于 2021-06-24 04:46:04

你必须用装饰器。这是Pythonic,您必须尽可能编写Pythonic代码:

代码语言:javascript
运行
复制
import math
import operator
import functools

def filter(func):
    def _(f):
        @functools.wraps(f)
        def _(args):
            return f.__call__(list.__call__(__builtins__.filter.__call__(func, args)))
        return _
    return _

def transform(func):
    def _(f):
        @functools.wraps(f)
        def _(args):
            return f.__call__(func.__call__(args))
        return _
    return _

def map(func):
    def _(f):
        @functools.wraps(f)
        def _(args):
            return f.__call__(list.__call__(__builtins__.map.__call__(func, args)))
        return _
    return _

y = [5, 6, 8, 9, 11]

@transform(enumerate)
@filter(lambda v: y.__contains__(operator.itemgetter(int(round(math.pi.__mul__(pow(int(math.e).__mul__(int(math.pi + math.e)), int(math.pi.__add__(math.e)))), pow(hash(math.inf), next(v for k, v in __builtins__.__dict__.items.__call__() if k.__eq__(y.__class__.__name__)).__call__().__len__.__call__()).__neg__())).__sub__(hash(math.inf)))(v)))
@map(operator.itemgetter(hash(math.nan)))
def solve(v):
    return v
    
print(solve([5, 6, 7, 8, 9, 10, 11, 12]))
# Outputs [0, 1, 3, 4, 6]
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68109627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档