python – Criar uma lista de contatos e a separar em duas outras listas

Tenho que criar uma lista de contatos em Python, com nome, idade e numero do telefone, e depois tenho que separar em 2 lista, uma lista só com os contatos de maior de 18 anos e outra lista apenas com menor de 18 anos e imprimir na tela as 2 listas separada em ordem alfabética.

Mas eu não estou conseguindo separar as lista
elas saem desse jeito aqui 👇👇👇

(('joao', 'maria'), (33, 12), ('1234567', '98765432'))

(('joao', 'maria'), (33, 12), ('1234567', '98765432'))

Mas era pra sair dessa maneira 👇👇👇

Lista1:

nome: joao, idade: 33, Numero:1234567

Lista2:

nome: maria, idade: 12, Numero:98765432

O código é esse:

contatoNome = ()
contatoIdade = ()
contatoNumero = ()
contato = {"nome" : contatoNome, "idade" : contatoIdade, "numero" : contatoNumero}

lista1 = ()
lista2 = ()

entrada = ""
while entrada != "s":
    nome = input('Qual o nome? ')
    contatoNome.append(nome)
    idade = int(input('Digite a idade: '))
    contatoIdade.append(idade)
    numero = input('Digite o numero: ')
    contatoNumero.append(numero)
    entrada = input("Deseja sair? ")
    print()
    if entrada.lower() == "s":
        verificar = contato("idade")
        for n in verificar:
            if n > 18:
                 lista1.append(contatoNome)#{"nome" : contatoNome, "idade" : contatoIdade, "numero" : contatoNumero}
                 lista1.append(contatoIdade)
                 lista1.append(contatoNumero)
            else:
                lista2.append(contatoNome)  # {"nome" : contatoNome, "idade" : contatoIdade, "numero" : contatoNumero}
                lista2.append(contatoIdade)
                lista2.append(contatoNumero)
        print()
        print(lista1)
        print()
        print(lista2)

python – Almacenamiento en listas con elementos repetidos

Estoy haciendo un programa y por mi poco conocimiento he necesitado crear una lista con los elementos repetidos:

días_de_semana = ('lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado', 'domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado', 'domingo')

Tengo entendido que el total de almacenamiento de esa lista es igual al de esta lista:

días_de_semana = ('lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado', 'domingo')

Ya que, por ejemplo, el elemento días_de_semana(0) se guarda en el mismo espacio de días_de_semana(7).
Eso solamente lo leí, pero no estoy seguro, si alguien sabe que lo que estoy diciendo es correcto me lo podría confirmar.

Y también si alguien sabe si en esa lista (la primera, la que tiene los elementos repetidos) se puede liberar espacio o hacer que se vea mejor estaría agradecido, muchas gracias.

array – Atividade Listas em C

Recebi a seguinte atividade no tópico de Listas em contiguidade fisica:

“Complete os atributos da estrutura lista_contatos no arquivo
lista_contatos.h. Crie um arquivo lista_contatos.c e
implemente as funções inicializar, inserir, print_lista e
destruir, sem modificar a interface (as funções definidas em
lista_contatos.h).

Após isso, modifique a função inserir para que, ao invés de falhar quando não
tiver espaço, proceda da seguinte forma:
● Alocar um vetor de itens com capacidade de 150% da atual;
● Atualizar a nova capacidade;
● Copiar os itens do vetor antigo para o novo vetor e usar o novo
a partir daí;
● Liberar o vetor antigo;
● Inserir o novo item normalmente.
Fique à vontade para adicionar novas funções se achar necessário,
porém, não mude os arquivos .h”

Minha duvida fica em o que eu devo utilizar para implementar essas funções solicitadas(como estamos aprendendo listas em contiguidade fisica, acredito que seja algo assim, mas não sei como), e de que maneira eu consigo fazer isso, visto que, eu não devo mudar a interface.

Vou colocar aqui todos os codigos que vieram da atividade:

//lista_contatos.h//
#ifndef LISTA_H
#define LISTA_H

#include "contato.h"

typedef struct lista_contatos {
//CompleteAqui//
} lista_contatos;

/** Inicializa uma lista vazia de contatos  */
void inicializar(lista_contatos *l, int capacidade);

/** Destroi a lista de contatos, liberando o espaço ocupado */
void destruir(lista_contatos *l);

/** Mostra na tela a lista de contatos */
void print_lista(lista_contatos* l);

/**
* Adiciona um elemento na lista de contatos. Retorna 1 se
* a insercao foi bem sucedida e 0 caso contrario
*/
int inserir(lista_contatos *l, contato novo);

#endif // LISTA_H

e

//contato.h//
#ifndef CONTATO_H
#define CONTATO_H

typedef struct contato {
char nome(140);
char telefone(20);
int ano, mes, dia;
} contato;

#endif // CONTATO_H

e finalmente o main:

#include <stdio.h>
#include <stdlib.h>

#include "contato.h"
#include "lista_contatos.h"

int main()
{
lista_contatos amigos;
inicializar(&amigos, 3);

contato a = {"neil tyson", "+1(699)193265", 1958,10,5};
contato b = {"serena williams", "+1(369)654963", 1981,9,26};
contato c = {"edson nascimento", "+55 (11) 35693696", 1940,10,23};
contato d = {"miguel sapateiro", "+49 (0151) 9876589", 1969,1,3};

inserir(&amigos, a);
inserir(&amigos, b);
inserir(&amigos, c);
inserir(&amigos, d);

print_lista(&amigos);

destruir(&amigos);

return 0;
}

Soy novato y estoy arrancando con Python. No puedo completar un diccionario a través de dos listas con for

verduleria{}

lista_de_frutas=("banana","manzana","ciruela","sandía")
lista_de_colores=("amarilla","verde","morado","rojo")



for frutas in lista_de_frutas:

     for colores in lista_de_colores:
   
         verduleria(frutas)=(colores)

print(verduleria)

Completa las keys del diccionario de buena forma pero no los values, ya que los completa a todo el diccionario con el value=rojo

Obtener listas en python – Stack Overflow en español

mi código:

indx=(0,1)
lista1 = (('casa',1,8,True,'casa', 'puerta'),('arbol', 'perro', 9986, 'xs86d'),('portatil', taza', 9776, 'hdge6dy', 'cascos'))

for i in lista1:
  for n in indx:
    print(i(n))

lo que obtengo con este código es todos los elementos indexados por indx dentro de de las listas anidadas , lo que me gustaria obtener es una lista con los elementos de la primera lista y otra lista con los elementos de la segunda y asi con todas.
he intentando esto:

a = ()
for i in lista1:
  for n in indx:
    a.append(i(n))

pero obtengo una lista con los elementos de cada lista.

lambda – Como puedo filtrar una lista que contiene otras listas de entidades en java 8 usando lamdas para evitar los fors anidados

Tengo las siguientes clases (a modo de ejemplo), puesto que el sistema original tiene una estructura similar pero con muchas mas anidaciones y listas anidadas, pero la idea es similar.
Se que deberian de rehacer la logica pero ya es tarde para eso, asi que requiero evitar los for’s anidados que hacen que la memoria se dispare.

public class ClaseA {
    private Long id;
    private String nombre;
    private BigDecimal total;
    private List<ClaseA2> listaA1;
    //Setters/Getters
}

public class ClaseA1 {
    private Long id;
    private String nombre;
    private BigDecimal total;
    private List<ClaseA2> listaA2;
    //Setters/Getters
}

public class ClaseA2 {
    private Long id;
    private String nombre;
    private BigDecimal total;
    //Setters/Getters
}

public class ClaseB {
    private Long id;
    private String nombre;
    private BigDecimal total;
    private List<ClaseB1> listaB1;
    //Setters/Getters
}

public class ClaseB1 {
    private Long id;
    private String nombre;
    private BigDecimal total;
    private List<ClaseB2> listaClaseB2;
    //Setters/Getters
}

public class ClaseB2 {
    private Long id;
    private String nombre;
    private BigDecimal total;
    private List<ClaseBA1> listaClaseBA1;
    //Setters/Getters
}

public class ClaseBA1 {
    private Long id;
    private String nombre;
    private BigDecimal total;
    
    //Setters/Getters
}

Lo que deseo es como poder por ejemplo filtrar por el ClaseB.nombre y ClaseBA1.nombre partiendo de una lista de List<ClaseA> resultados; para poder mostarlo en la pantalla con jsf.

No se si eso se pueda.
Muchas gracias por tomarse el tiempo de leer mi duda, sinceramente no logro entender como funciona eso de las lamdas en java.

python – ordenar un nido de listas

Dado una lista la cual es una nido de listas como [[conejo, cabra, pera], [manzana, coche, pelo],[pozo, águila, verde]]
ordenar alfabéticamente solo por el primer elemento de las listas anidadas.
gracias de antemano,
estaba pensado en un algoritmo como el bubblesort or algo así.

Convertendo uma lista de listas de vetores em uma lista de matrizes – R

Estou trabalhando em um modelo ambiental, que retorna uma lista de vetores. Cada lista corresponde a um ponto no espaço, e cada vetor é uma série temporal de dados para diferentes variáveis, como vazão, evaporação e etc. Estou tentando extrair do modo mais simples possível cada vetor de cada lista para criar matrizes; uma para cada variável, para que eu possa criar rasters depois.

A estrutura que eu estou tentando converter parece com isso t <- list(list("r"=c(1,2,3), "e"=c(4,5,6), "t"=c(7,8,9)), list("r"=c(11,12,13), "e"=c(14,15,16), "t"=c(17,18,19))), mas eu quero que se torne isso t0 <- list("r"=do.call(rbind, list(c(1,2,3), c(11,12,13))), "e"=do.call(rbind, list(c(4,5,6), c(14,15,16))), "t"=do.call(rbind, list(c(7,8,9), c(17,18,19)))). Como eu poderia fazer essa conversão automaticamente sem precisar especificar os nomes das colunas, mas mesmo assim mantendo-os para acessar usando o operador $?

Obrigado!

python – Agrupación de listas de coordenadas en una tabla de valores

Estoy analizando una serie de imágenes extrayendo las coordenadas de los píxeles que me interesan. Cuando tenía una lista de listas (siendo cada una de estas listas las coordenadas de cada imagen) como:

coordinates= (((430, 145), (430, 146), (430, 147), (430, 148), (430, 149), (430, 150), (430, 151), (430, 152), (430, 153), (430, 154), (430, 155)),
((0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7), (0, 8), (0, 9), (0, 10), (0, 11), (0, 12), (0, 13), (0, 14), (0, 15), (0, 16), (0, 17)))

Con el código:

from collections import Counter
import pandas as pd

all_coordinates = (item for img in coordinates for item in img)
c = Counter(all_coordinates)
max_x = max((item(0) for item in all_coordinates))
max_y = max((item(1) for item in all_coordinates))
coordinates_dict = dict()
for i in range(max_x + 1):
    for j in range(max_y + 1):
        coordinates_dict.update({(i,j): c((i,j))})
df = pd.DataFrame(coordinates_dict.items(), columns=('Coordinates','Value'))
pd.set_option("display.max_rows", 20, "display.max_columns", 20)
df(("x", "y")) = pd.DataFrame(df.Coordinates.to_list())

Podía conseguir:

DataFrame

Ahora que tengo una lista de muchas listas donde hay muchas más listas que imágenes debido a la implementación del multiprocesamiento (y que empiezan por coordenadas distintas teniendo tamaños distintos), tengo una lista tal que:

coordinates= (((0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7), (0, 8), (0, 9), (0, 10), (0, 11), (0, 12), (0, 13), (0, 14), (0, 15), (0, 16), (0, 17)),
((0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7), (0, 8), (0, 9), (0, 10), (0, 11), (0, 12), (0, 13), (0, 40)))

Donde el código anterior no me funciona y no sé que tendría que cambiar. Gracias.

Como unir dos listas en otra lista JAVA

Tengo tres listas, L1 y L2 que son listas ordenadas, y L que es donde hay que unir L1 y L2 de manera ordenada de pequeño a mayor. No puedo usar el mítico metodo de new(Nodo), por lo que tengo que ir enlazando L1 y L2 a L y ir borrando de las listas L1 y L2 cuando ya esten en L. En caso de que L no este vacia hay que borrar su contenido.

Es decir, si tengo, L1 -> 1 3 6 7, L2 -> 2 4 5 9 y L -> 0 8, el resultado sera L -> 1 2 3 4 5 6 7 9.

El metodo se come lo que hay en la lista L y une en esa misma lista L1 y L2, dejando vacias L1 y L2.

Mi problema es que no consigo acertar con la implementación del metodo, os dejo lo que he implementado hasta ahora por si me podeis decir cual es el fallo o como tendría que hacer.

public class Lista {

    private Nodo first;
    private int size;

    private static class Nodo {
        private Nodo next;
        private int info;

        public Nodo(int datum) {
            this.info = datum;
        }
    }

    public boolean isEmpty() {
        return this.size == 0;
    }

    public int size() {
        return this.size;
    }

    public Lista(Scanner input) {

        this.first = null;
        this.size = 0;

        if (input.hasNext()) {
            this.first = new Nodo(input.nextInt());
            this.size++;

            Nodo current = first;
            while (input.hasNext()) {
                current.next = new Nodo(input.nextInt());
                this.size++;
                current = current.next;
            }
        }
    }

    public String toString() {
        StringBuilder sb = new StringBuilder("( ");
        Nodo current = this.first;
        while (current != null) {
            sb.append(current.info + " ");
            current = current.next;
        }
        sb.append(") (" + this.size + " elemento)");
        return sb.toString();
    }

    

public void comerUnir(Lista List1, Lista List2) {
    
        Nodo current1 = List1.first;
        Nodo current2 = List2.first;
        
        int kop1 = List1.size();
        int kop2 = List2.size();
        
        int tamaño = this.size();
        Nodo current = this.first;
            
        if(this.first == null) {
            
            if (current2.info > current1.info) {
                this.first = current1;
                current = this.first;
                current1 = current1.next;
                kop1--;
                tamaño++;
            }else {
                this.first = current2;
                current = this.first;
                current2 = current2.next;
                kop2--;
                tamaño++;
            }
        }else {
            
            while(kop2 != 0 || kop1 != 0) {
                
                if (kop1 == 0) {
                    current.next = current2;
                    current2 = current2.next;
                    current = current.next;
                    kop2--;
                    tamaño++;
                    
                }else if (kop2 == 0) {
                    current.next = current1;
                    current1 = current1.next;
                    current = current.next;
                    kop1--;
                    tamaño++;
                    
                }else {
                    if (current2.info > current1.info) {
                        current.next = current1;
                        current = current.next;
                        current1 = current1.next;
                        kop1--;
                        tamaño++;
                    }else {
                        current.next = current2;
                        current = current.next;
                        current2 = current.next;
                        kop2--;
                        tamaño++;
                    }
                }
            }
            this.size = tamaño;
        }
            
            
            
    }

public static void main(String() args) throws FileNotFoundException {
        
        Lista l1 = new Lista(new Scanner(new File("files/G1/lista3.txt")));
        Lista l2 = new Lista(new Scanner(new File("files/G1/lista4.txt")));
        Lista l = new Lista(new Scanner(new File("files/G1/lista1.txt")));

        System.out.printf("L lista: %s%n%n se come y une la lista L1: %s%n%n"
                + "y la lista L2 %s%n%n", l, l1, l2);
        l.comerUnir(l1, l2);
        System.out.printf("Resultado%n%nL = %s%n%nL1 = %s%n%nL2 = %s%n", l, l1, l2);
    }
}