Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 24.06.2022
Сообщений: 11

Unwrapping then printing python list of lists!

24.06.2022, 19:51. Показов 1356. Ответов 23

Студворк — интернет-сервис помощи студентам
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
startbonds =  [
    [1, 2, 3, 4, 5],
    [2, 1,-10000,-10000,-10000],
    [3, 1,-10000,-10000,-10000],
    [4, 1,-10000,-10000,-10000],
    [5, 1, 6,-10000,-10000],
    [6, 5, 7, 8, 9],
    [7, 6,-10000,-10000,-10000],
    [8, 6,-10000,-10000,-10000],
    [9, 6, 10, 11,12],
    [10, 9,-10000,-10000,-10000],
    [11, 9,-10000,-10000,-10000],
]
midbonds = [
    [1, -2, 2, -10000,-10000],
    [2, 1, 3, 4, 5],
    [3, 2,-10000,-10000,-10000],
    [4, 2,-10000,-10000,-10000],
    [5, 2, 6, 7, 8],
    [6, 5,-10000,-10000,-10000],
    [7, 5,-10000,-10000,-10000],
]
 
endbonds = [
    [1, -2, 2,-10000,-10000],
    [2, 1, 3, 4, 5],
    [3, 2,-10000,-10000,-10000],
    [4, 2,-10000,-10000,-10000],
    [5, 2, 6, 7, 8],
    [6, 5,-10000,-10000,-10000],
    [7, 5,-10000,-10000,-10000],
    [8, 5, 9,-10000,-10000],
    [9, 8,-10000,-10000,-10000]
]
 
 
bonds = startbonds + midbonds + endbonds
 
for i in range(27):
    lineStrco = str("CONECT")
    lineStrco = "{:6s}".format(lineStrco)
    lineStr11 = str(bondos[i])
    lineStr11 = "{:^5s}".format(lineStr11)
    print(lineStrco+lineStr11)
The output:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CONECT[1, 2, 3, 4, 5]
CONECT[2, 1, -10000, -10000, -10000]
CONECT[3, 1, -10000, -10000, -10000]
CONECT[4, 1, -10000, -10000, -10000]
CONECT[5, 1, 6, -10000, -10000]
CONECT[6, 5, 7, 8, 9]
CONECT[7, 6, -10000, -10000, -10000]
CONECT[8, 6, -10000, -10000, -10000]
CONECT[9, 6, 10, 11, 12]
CONECT[10, 9, -10000, -10000, -10000]
CONECT[11, 9, -10000, -10000, -10000]
CONECT[1, -2, 2, -10000, -10000]
CONECT[2, 1, 3, 4, 5]
CONECT[3, 2, -10000, -10000, -10000]
CONECT[4, 2, -10000, -10000, -10000]
CONECT[5, 2, 6, 7, 8]
CONECT[6, 5, -10000, -10000, -10000]
CONECT[7, 5, -10000, -10000, -10000]
CONECT[1, -2, 2, -10000, -10000]
CONECT[2, 1, 3, 4, 5]
CONECT[3, 2, -10000, -10000, -10000]
CONECT[4, 2, -10000, -10000, -10000]
CONECT[5, 2, 6, 7, 8]
CONECT[6, 5, -10000, -10000, -10000]
CONECT[7, 5, -10000, -10000, -10000]
CONECT[8, 5, 9, -10000, -10000]
CONECT[9, 8, -10000, -10000, -10000]

I want to remove ',','[' ,']' and every item <= 0
and add 5s spase between the columns
Note: I did it by deviding the bonds into 5 lists then remove every item <= 0


The desired output:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CONECT  1    2    3    4    5  
CONECT  2    1                 
CONECT  3    1                 
CONECT  4    1                 
CONECT  5    1    6            
CONECT  6    5    7    8    9  
CONECT  7    6                 
CONECT  8    6                 
CONECT  9    6   10   11   12  
CONECT 10    9                 
CONECT 11    9                 
CONECT 12    9   13            
CONECT 13   12   14   15   16  
CONECT 14   13                 
CONECT 15   13                 
CONECT 16   13   17   18   19  
CONECT 17   16                 
CONECT 18   16                 
CONECT 19   16   20            
CONECT 20   19   21   22   23  
CONECT 21   20                 
CONECT 22   20                 
CONECT 23   20   24   25   26  
CONECT 24   23                 
CONECT 25   23                 
CONECT 26   23   27            
CONECT 27   26
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.06.2022, 19:51
Ответы с готовыми решениями:

Добавление информации в соединенном листе листа (lists of list)
Я пытаюсь создать лист обратного индекса, где есть слово и все встречающиеся ссылки на него (слово ссылка1, ссылка2). Не могу сообразить...

Вектор из данных типа list(): "vector of lists" in r studio
Есть у меня некий обьект в реальности. Назовём его спорофор. #здесь всё для спорофоров #инициация роста одного отдельного спорофора ...

Как исправить ошибку unwrapping Optional value
Не могу разобраться почему появляется эта ошибка : &quot;Unexpectedly found nil while implicitly unwrapping an Optional value&quot; в коде: ...

23
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
24.06.2022, 21:52
Elsaid,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
...
for i in range(27):
    lineStrco = str("CONECT")
    lineStrco = "{:6s}".format(lineStrco)
    #lineStr11 = bonds[i]
    if i > 0:
        tmp = bonds[i-1][0] + 1
        bonds[i] = [tmp if not j 
                    else '' if bonds[i][j] == -10000 
                    else bonds[i][j] - bonds[i][0] + tmp
                    for j in range(len(bonds[i]))]
    lineStr11 = ''.join("{:^5s}".format(str(e)) for e in bonds[i])
    print(lineStrco+lineStr11)
0
0 / 0 / 0
Регистрация: 24.06.2022
Сообщений: 11
25.06.2022, 19:00  [ТС]
Thanks for the answer.
it looks good, but it starts from the second row, I need some explanation. I can not speak Russian.
0
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 760
25.06.2022, 21:23
Elsaid,
Python
1
2
for bond in startbonds + midbonds + endbonds:
    print('CONECT ' + ''.join('%-5s' % x for x in bond if x > 0))
0
0 / 0 / 0
Регистрация: 24.06.2022
Сообщений: 11
26.06.2022, 11:31  [ТС]
Sorry, I only speak English or Arabic!
It does not work properly. If you can explain a bit in English, it would be nice.
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
26.06.2022, 13:09
Elsaid,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
startbonds =  [
    [1, 2, 3, 4, 5],
    [2, 1,-10000,-10000,-10000],
    [3, 1,-10000,-10000,-10000],
    [4, 1,-10000,-10000,-10000],
    [5, 1, 6,-10000,-10000],
    [6, 5, 7, 8, 9],
    [7, 6,-10000,-10000,-10000],
    [8, 6,-10000,-10000,-10000],
    [9, 6, 10, 11,12],
    [10, 9,-10000,-10000,-10000],
    [11, 9,-10000,-10000,-10000],
]
midbonds = [
    [1, -2, 2, -10000,-10000],
    [2, 1, 3, 4, 5],
    [3, 2,-10000,-10000,-10000],
    [4, 2,-10000,-10000,-10000],
    [5, 2, 6, 7, 8],
    [6, 5,-10000,-10000,-10000],
    [7, 5,-10000,-10000,-10000],
]
 
endbonds = [
    [1, -2, 2,-10000,-10000],
    [2, 1, 3, 4, 5],
    [3, 2,-10000,-10000,-10000],
    [4, 2,-10000,-10000,-10000],
    [5, 2, 6, 7, 8],
    [6, 5,-10000,-10000,-10000],
    [7, 5,-10000,-10000,-10000],
    [8, 5, 9,-10000,-10000],
    [9, 8,-10000,-10000,-10000]
]
 
 
bonds = startbonds + midbonds + endbonds
 
n = len(bonds)
bonds[0] = ['' if e<0 else e for e in bonds[0]]
 
for i in range(1, n):
    tmp = bonds[i-1][0] + 1
    bonds[i] = [tmp if not j 
           else '' if bonds[i][j] == -10000 
           else bonds[i][j] - bonds[i][0] + tmp
                for j in range(len(bonds[i]))]
 
for i in range(n):
    print('CONECT',end='')
    print(*(f'{e:^5}' for e in bonds[i]))
0
0 / 0 / 0
Регистрация: 24.06.2022
Сообщений: 11
26.06.2022, 16:12  [ТС]
Thanks a lot for your answer!
It worked perfectly when printing to console, but it doesnot work when printing to file
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
     n = len(self.bonds)
        self.bonds[0] = ['' if e<0 else e for e in self.bonds[0]]
         
        for i in range(1, n):
            tmp = self.bonds[i-1][0] + 1
            self.bonds[i] = [tmp if not j 
            else '' if self.bonds[i][j] == -10000 
            else self.bonds[i][j] - self.bonds[i][0] + tmp
            for j in range(len(self.bonds[i]))]
 
        for i in range(n):
            with open('linearPEG.pdb', 'a') as file:
                file.writelines('CONECT', end='')
                file.writelines(*(f'{e:^5}' for e in self.bonds[i]))
It gives the error:
File ~/.config/spyder-py3/temp.py:579 in <module>
myChain.cleanup()

File ~/.config/spyder-py3/temp.py:300 in cleanup
self.bonds[i] = [tmp if not j

File ~/.config/spyder-py3/temp.py:302 in <listcomp>
else self.bonds[i][j] - self.bonds[i][0] + tmp

TypeError: unsupported operand type(s) for -: 'str' and 'int'
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.06.2022, 16:21
Elsaid,
Python
1
2
with open('linearPEG.pdb', 'w') as file:
    file.write('\n'.join('CONECT' + ' '.join([f'{e:^5}' for e in bonds[i]]) for i in range(n)))
1
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
26.06.2022, 16:51
iSmokeJC, только вместо ' '.join -> ''.join
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.06.2022, 16:56
Gdez, ну может быть, я не вникал особо в требования ТСа. Да и не суть, сам подточит как ему надо
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
26.06.2022, 17:04
Elsaid,
It gives the error:
File ~/.config/spyder-py3/temp.py:579 in <module>
myChain.cleanup()

File ~/.config/spyder-py3/temp.py:300 in cleanup
self.bonds[i] = [tmp if not j

File ~/.config/spyder-py3/temp.py:302 in <listcomp>
else self.bonds[i][j] - self.bonds[i][0] + tmp

TypeError: unsupported operand type(s) for -: 'str' and 'int'
In your example of an array of data, all lines contain five variables in numeric format.
Perhaps there are empty values ​ ​ in the test (real) data in the form of an empty string?
0
0 / 0 / 0
Регистрация: 24.06.2022
Сообщений: 11
26.06.2022, 18:13  [ТС]
@Gdez My data are like the example contain 5 variables in numeric format.
This code prints the desired output to the console, but it gives an error when I print it to a file.
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
26.06.2022, 18:24
Elsaid, Well, then use the proposed code from iSmokeJC (comment 8). Only instead of ' ' .join you need ."join
0
0 / 0 / 0
Регистрация: 24.06.2022
Сообщений: 11
26.06.2022, 18:35  [ТС]
@Gdez Same error!
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
26.06.2022, 19:41
Elsaid, 1. In progress:
2. Result.
3. Online conversion from * .pdb to * txt
Миниатюры
Unwrapping then printing python list of lists!   Unwrapping then printing python list of lists!   Unwrapping then printing python list of lists!  

0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
26.06.2022, 19:45
Instead of the first snapshot, you need (tested writing to a txt file)
Миниатюры
Unwrapping then printing python list of lists!  
0
0 / 0 / 0
Регистрация: 24.06.2022
Сообщений: 11
26.06.2022, 21:19  [ТС]
@Gdez
I got this error:
File ~/.config/spyder-py3/temp.py:307
print('\n'.join(['CONECT'+''.join(['{0:^5}'.format(e) for e in self.bonds[i]])for i in range(n)])file=file)
^
SyntaxError: invalid syntax

I printed to txt file like you suggested:

Python
1
2
        with  open ( 'A1EG..txt' ,  'w' )  as  file :
            print('\n'.join(['CONECT'+''.join(['{0:^5}'.format(e) for e in self.bonds[i]])for i in range(n)])file=file)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.06.2022, 23:12
Elsaid, you forgot a comma before the file parameter
range(n)]), file=file)
0
0 / 0 / 0
Регистрация: 24.06.2022
Сообщений: 11
26.06.2022, 23:25  [ТС]
Gives error:
Python
1
2
3
4
5
6
7
File ~/.config/spyder-py3/temp.py:300 in cleanup
    self.bonds[i] = [tmp if not j
 
  File ~/.config/spyder-py3/temp.py:302 in <listcomp>
    else self.bonds[i][j] - self.bonds[i][0] + tmp
 
TypeError: unsupported operand type(s) for -: 'str' and 'int'
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
27.06.2022, 02:08
Elsaid, The error shows that the source arrays have a string data type, as I wrote above.
Try that then:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
startbonds =  [
    [1, 2, 3, 4, 5],
    [2, 1,-10000,-10000,-10000],
    [3, 1,-10000,-10000,-10000],
    [4, 1,-10000,-10000,-10000],
    [5, 1, 6,-10000,-10000],
    [6, 5, 7, 8, 9],
    [7, 6,-10000,-10000,-10000],
    [8, 6,-10000,-10000,-10000],
    [9, 6, 10, 11,12],
    [10, 9,-10000,-10000,-10000],
    [11, 9,-10000,-10000,-10000],
]
midbonds = [
    [1, -2, 2, -10000,-10000],
    [2, 1, 3, 4, 5],
    [3, 2,-10000,-10000,-10000],
    [4, 2,-10000,-10000,-10000],
    [5, 2, 6, 7, 8],
    [6, 5,-10000,-10000,-10000],
    [7, 5,-10000,-10000,-10000],
]
 
endbonds = [
    [1, -2, 2,-10000,-10000],
    [2, 1, 3, 4, 5],
    [3, 2,-10000,-10000,-10000],
    [4, 2,-10000,-10000,-10000],
    [5, 2, 6, 7, 8],
    [6, 5,-10000,-10000,-10000],
    [7, 5,-10000,-10000,-10000],
    [8, 5, 9,-10000,-10000],
    [9, 8,-10000,-10000,-10000]
]
 
 
bonds = startbonds + midbonds + endbonds
 
n = len(bonds)
bonds[0] = ['' if e==-10000 else e for e in bonds[0]]
###Added check for string type
que = lambda x: x == -10000 or isinstance(x, str)
###
for i in range(1, n):
    tmp = bonds[i-1][0] + 1
    bonds[i] = [tmp if not j 
           else '' if que(bonds[i][j])
           else bonds[i][j] - bonds[i][0] + tmp
                for j in range(len(bonds[i]))]
 
with open('linearPEG.pdb', 'w') as file:
    print('\n'.join(['CONECT'+''.join(['{0:^5}'.format(e) for e in bonds[i]]) for i in range(n)]), file=file)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.06.2022, 02:08
Помогаю со студенческими работами здесь

Fatal error: unexpectedly found nil while unwrapping an Optional value
Всем привет. Я понимаю что тема заезженная, много информации по ней нашел, но как решить конкретно мой случай так и не понял. ...

Ошибка: Printer is not currently printing
Здравствуйте. Имеется следующий код: TPrinter *myPrinter = Printer(); int ScaleX, ScaleY; TRect ImageRect; ...

Python list generator
ребят, подскажите пожалуйста, можно ли заменить в кодe двf цикла на генераторы списка? Код моделирует бросание кубика. from random...

Lisp 540p (two-sided printing).zip
Lisp 540p (two-sided printing).zip https://www.dropbox.com/s/7ch4fz56vzeuey0/Lisp%20540p%20%28two-sided%20printing%29.zip

Printing from Linux on printer on Windows computer
Здравствуйте! Не знаю, здесь ли надо это спрашивать, но, судя по названию тем, вроде бы можно. Как из Linux через сеть напечатать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru