Python:列出elemen的存在

2024-06-16 08:30:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试检查列表中是否存在元素,如果存在,请在此特定列表(在列表中)上执行操作:

transac1 = ['John','6', '20/10/2016']
transac2 = ['Emma','6', '20/10/2016']
transactions = [['Marie',2],['Emma',9]]

我想做以下工作:

## non-Python code
if ['John',x] exists in transactions:
     ## I need to have the index where [John,x] is at that point
     then transactions[index][1] += transac1[1] 
else:
     transactions.append(['John',6])

因此,用transac1执行这个循环将使:

transactions = [['Marie',2],['Emma',9],['John',6]]

用transac2执行这个循环会:

transactions = [['Marie',2],['Emma',15],['John',6]]

我在使用“经典双循环”时遇到的问题是,每次它找不到['John',x]时,它都会附加到列表中,在做某事之前,我需要知道整个列表(另外,我有把握,如果'John'在列表中,它只会出现一次)。你知道吗

我的限制是我不能使用字典。谢谢。你知道吗


Tags: in元素列表indexifexistscodeneed
2条回答

使用numpy是一种选择吗?如果是,您可以执行以下操作:

import numpy as np

transac1 = ['John','6', '20/10/2016']
transac2 = ['Emma','6', '20/10/2016']
transactions = [['Marie',2],['Emma',9]]

t1 = np.array(transac1)
t2 = np.array(transac2)
tt = np.array(transactions)

names = tt[:, 0]
amounts = tt[:, 1]

if t1[0] in names:
    tt[names.index(t1[0]), 1] += t[1]
else:
    tt.append([t1[0], t1[1])

如果不是,我只会在每次迭代中检查名称。你知道吗

transac1 = ['John','6', '20/10/2016']
transac2 = ['Emma','6', '20/10/2016']
transactions = [['Marie',2],['Emma',9]]

# Run with transac1
def func():
    for i, t in enumerate(transactions):
        if t[0] == transac1[0]:
            transactions[i][1] += transac1[1]
            return transactions
    transactions.append([transac1[0], transac1[1])
    return transactions

func()

要循环查看列表列表并获取索引,请执行以下操作:

for idx, item in enumerate(transactions):
    if item[0] == 'John' and item[1] == x:
        pass
    else:
        transactions.append(['John',6])

相关问题 更多 >