Omijanie elementów listy

0

Witam, szukam sposobu na otrzymanie elementów listy w taki sposób, jaki przedstawiłem poniżej.

items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
# potrzebny output 0, 1, 3, 4, 5, 7, 8, 9, 11, 12, 13, 15, 16, 17, 19, 20]

Jak widać, po pierwszym (licząc od zerowego) elemencie tabeli co trzeci element jest omijany. Z góry dziękuję za odpowiedz.

0

Coś takiego?

def get(array):
	result = []
	m = 2
	c = 0
	for i in array:
		if c < m:
			c = c+1
			result.append(i)
		else:
			c = 0
	return result


array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
print(get(array))
2
sorted(list(set(items) - set(items[2::][::4])))

albo:

[el for el in items if el not in items[2::][::4]]
1
def calc(x):
    return 1.3382 * x - 1.3750;

for i in range(1 , 17):
    print(round(calc(i)))
2
[number for index, number in enumerate(items, 2) if index % 4]
1
Szymon Oryńczak napisał(a):

Witam, szukam sposobu na otrzymanie elementów listy w taki sposób, jaki przedstawiłem poniżej.

items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
# potrzebny output 0, 1, 3, 4, 5, 7, 8, 9, 11, 12, 13, 15, 16, 17, 19, 20]

Jak widać, po pierwszym (licząc od zerowego) elemencie tabeli co trzeci element jest omijany. Z góry dziękuję za odpowiedz.

Czy jesteś pewien, że Twój output jest poprawny?
Pierwsza trójka ok:
Masz 0 1 2, wywalamy 2, zostaje 0 1.

Druga trójka źle:
Masz 3 4 5, wywalamy 5, powinno zostać 3 4, więc co po tych cyfrach robi 5 w Twoim outpucie?

0

Jeśli kolejność elementów jest dowolna, albo elementy mają być posortowany, proponuję:

print (sorted(items[0::3] + items[1::3]))

Jeśli kolejność ma zostać zachowana, to można jeszcze kombinować z zip'em:

result = []

for a, b in zip (items[0::3], items[1::3]):
	result += [a,b]
	
print (result)

Tylko trzeba by jeszcze jakoś dodatkowo obsłużyć tablice z nieparzystą ilością elementów.

5
>>> from itertools import cycle, compress
>>> items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
>>> list(compress(items, cycle([True, True, False, True])))
[0, 1, 3, 4, 5, 7, 8, 9, 11, 12, 13, 15, 16, 17, 19, 20]
1
del items[2::4]
0

Prosto mozna to uzyskac w petli for:

liczby = [ 0,1,2,3,4,5,6,7,8,9,10]
count = 0


for liczba in liczby:
    count = count +1
    if count == 3:
        count = 0
    else:
        print (liczba)

1 użytkowników online, w tym zalogowanych: 0, gości: 1