У меня есть следующие списки в python
lista_x = [2,3,4,5]
lista_y = [6,7,8,9]
Я пробую отвечать настоящий элемент (исключая концы) на следующее положение. Так что он получил что-то сходное с этим:
lista_x = [2,3,3,4,4,5]
lista_y = [6,7,7,8,8,9]
У меня есть этот код, но я не смог добиваться моей цели
for i in range(len(lista_x)):
if(i != 0 and i!=len(lista_x)): #Exluyendo extremos
lista_x.insert(i,lista_x[i]) #Agrega el valor actual
lista_y.insert(i,lista_y[i])
Этот вопрос кажется tratase упражнением, которое он ищет, что ты получил изобретательное решение выдвинутой проблемы.
В общем, когда бук, который обрабатывать список, первое, что ты должен знать, это различные методы и функции, которые действуют со списками, и искать, если какой-либо из них может serte утилиты. Один из самых могущественных zip с тем, который ты можешь перемешивать списки. С немного зоркости, возможно видеть, что, если ты делаешь один zip
списка с собой самим, ты можешь прибывать во что-то очень предстоящее, во что ты нуждаешься:
>> lista = [2, 3, 4, 5]
>> resultado = zip(lista, lista[1:])
Результат:
>> print(list(resultado))
[(2, 3), (3, 4), (4, 5)]
То, чего нет, состоит в том, чтобы прилагать все эти tuplas и ты получил бы решение. Чтобы прилагать ты мог бы создавать цикл, который добавлял каждый tupla, но есть другая более прямая форма используя функцию sum
:
sum(zip(lista, lista[1:]), ())
Начальный элемент - пустой tupla ()
в который приложено (слагаемое) tuplas, которые мы получаем посредством zip
чтобы получать tupla. Как они просят у нас список, будет нужно превращать tupla в список.
Помещая все в Ваш сайт, решение:
resultado = list(sum(zip(lista, lista[1:]), ()))
Чтобы жизнь не осложняйтесь, верьте одна funciГіn в, что пробежал список со второй posiciГіn до нее перед последней posiciГіn. Это делается размещая despuГ©s списка между ключами [1:-1]
. Этим синтаксисом то, что он обозначает, состоит в том, чтобы был скопирован список со второй posiciГіn до конца, исключая Гєltimo статья.
Помнит, что в Пайтоне индексы начинаются с 0
, так что вторая posiciГіn - 1
.
-1
был бы последней posiciГіn
append
# -*- coding: utf-8 -*-
lista_x = [2, 3, 4, 5]
lista_y = [6, 7, 8, 9]
def no_entiendo_para_que_es_esto(lista):
resultado = [] # creamos una nueva lista para trabajar
resultado.append(lista[0]) # agregamos a la lista el primer item
# recorremos desde la posición 2 hasta la ante ultima posición
for item in lista[1:-1]:
# añadimos a la lista dos veces el item actual.
resultado.append(item)
resultado.append(item)
resultado.append(lista[-1]) # agregamos a la lista el ultimo item
return resultado
print no_entiendo_para_que_es_esto(lista_x)
print no_entiendo_para_que_es_esto(lista_y)
insert
# -*- coding: utf-8 -*-
def no_entiendo_para_que_es_esto2(lista):
resultado = lista[:] # hacemos una copia exacta de la lista original
# creamos un rango desde el indice 1 hasta el ante último.
for indice in range(len(lista))[1:-1]:
# Debemos multiplicar por dos el indice al que queremos insertar el
# valor, ya que la lista va creciendo y los item moviendose una
# posicion en cada iteración.
resultado.insert(indice * 2, lista[indice])
return resultado
print no_entiendo_para_que_es_esto2(['a', 'b', 'c', 'd', 'e'])
print no_entiendo_para_que_es_esto2(['uno', 'segundo', 'tercero', 'ultimo'])
print no_entiendo_para_que_es_esto2([1, 2, 3, 4, 5, 6, 7])
sum
на tuplas произведенные начиная с одной iteraciГіn def solucion3(lista):
return sum([(item, item) for item in lista], ())[1:-1]
print solucion3([2, 3, 4, 5])
# (2, 3, 3, 4, 4, 5)
print solucion3([2, 3, 4, 5, 6])
# (2, 3, 3, 4, 4, 5, 5, 6)
print solucion3(['a', 'b', 'c', 'd'])
# ('a', 'b', 'b', 'c', 'c', 'd')
print solucion3(['a', 'b', 'c', 'd', 'c'])
# ('a', 'b', 'b', 'c', 'c', 'd', 'd', 'c')
Большое спасибо, я funcionГі твой метод. Но также encontrГ© в stack overflow английский язык функция, что это resolviГі. Если кому-то удается использовать в какой-то день это, здесь я это оставляю.
lista_x = [i for i in lista_x for _ in (0, 1)]
lista_y = [i for i in lista_y for _ in (0, 1)]
#Eliminamos el primer elemento y el ultimo (excedentes generado por la funcion anterior)
lista_x.pop(0)
lista_y.pop(0)
lista_x.pop(len(lista_x)-1)
lista_y.pop(len(lista_y)-1)
Потому что не использовать ее funciГіn repeat библиотеки numpy
import numpy as np
a = [1,2,3,4] # una lista cualquiera
b = np.repeat(a,2) # duplicas la lista
c = np.delete(b,[0,len(b)-1]) # eliminas el primer y último elemento
print c # imprimes la lista
[1 2 2 3 3 4]