首页 > 解决方案 > python从列表中直接删除重复出现的值

问题描述

我用javascript编写了一个我不知道如何用python编写的代码。它的使用相当简单。有 2 个变量:买入和卖出。例如,有买、买、卖、买、卖、卖 javascript 给了我一个新的列表,包括买、卖、买、卖

´´const fs = require('fs');

class Trade {
 price;
side;
}

const array = 

console.log('AllTrades:');
console.log(array);

let trades = [];

for(let i = array.length - 1; i >= 0; i--) {
let trade = array[i];
let nextTrade = array[i - 1];



if(nextTrade) {
if(trade[0] == "BUY" && nextTrade[0] == "SELL") {
    trades[i] = trade;
}
if(trade[0] == "SELL" && nextTrade[0] == "BUY") {
    trades[i] = trade;
}
} else if(trade[0] == "BUY") {
trades[i] = trade;
}
}

trades = trades.filter(function (i) { return i != undefined;});

console.log('D Trades:');
for(let i = 0; i < trades.length; i++) {
console.log(trades[i]);
}

fs.writeFile('./data/trades.json', JSON.stringify(trades), (err, data) => {
 if (err) return console.log(err);
console.log('Trades > trades.txt');
});  ´´

标签: pythonarrayslist

解决方案


我假设你的问题是你不熟悉 python,这是我的解决方案:

list= ["Sell","Sell","Buy","Sell","Sell","Buy","Buy","Buy","Sell","Sell","Buy","Buy","Sell","Sell"];
index=[];

for k in range(len(list)-1):
    if list[k]==list[k+1]:
        index.append(k);
print (index)
for k in range(len(index)):
    list.pop(index[k]);
    if k<len(index)-1:
         index[k+1]=index[k+1]-(k+1);
    

 print (index);
 print(list);

我选择使用 2 循环,因为如果您在第一个循环中弹出列表的元素,您将遇到范围错误,因为列表现在有 len(list)-1 字符串。我只是使用 append 函数在列表末尾添加元素,然后 pop 通过给出索引来擦除元素

第一个循环创建一个包含所有重复字符串索引的列表,第二个循环删除它们


推荐阅读