извлечь данные переменной длины из списка - PullRequest
0 голосов
/ 30 октября 2018
list=[lorenzo,de tomasi,rieti,07-03-1995
maria,severone,cittaducale,04-03-1961
alessio,di febo,atri,07-02-1995
andrea,di francesco,penne,02-10-1995
lorenzo,de tomasi,rieti,07-03-1995
gianluca,de tomasi,dolores,17-10-1964]

Я должен создать новый список, содержащий всех людей, родившихся в одном и том же месте, в третьей позиции, используя циклы, длина места рождения является переменной, как я могу это сделать?

fin=open('collection_name.txt')

str=fin.read()

def remove_duplicate(listik):
    res=[]
    for i in listik:
        if i not in res:
            res.append(i)
    return res

for i in range(len(str)):
    if i==0:
        pos=0
        pippo='a'
        pluto=[]
        pos1=0
        pos2=0
    if str[i]==',': 
        for j in range(i+1,len(str)):
            if str[j]==',':
                pos1=j

                for k in range(j+1,len(str)):
                    if str[k]==',':
                        pos2=k
pippo=str[pos1+1:pos2]  

pluto.append(pippo)

print(pluto)

1 Ответ

0 голосов
/ 30 октября 2018

Ну, вы можете сначала str.split (',') , чтобы вы получали данные в массиве с каждой записью в позиции, а затем просто повторяли их, как:

data = str.split(',')
pluto = []
'''This will create a list with numbers 0..len(data)-1 with a step of 3
    so you'll be only iterating over the places. '''
for i in range(3, len(data), 3):
    if data[i] == "de rieti":
       pluto.append(data[i-2])
       pluto.append(data[i-1])
       pluto.append(data[i])
       pluto.append(data[i+1])
print(pluto)

Конечно, здесь вы должны сначала проверить, что эти i +/- n существуют, и, вероятно, это не решит вашу проблему на 100%, но это должно вас достаточно увлечь, чтобы увидеть, как действовать:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...