Форум программистов, компьютерный форум, киберфорум
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. Показов 1274. Ответов 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
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
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
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
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
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
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
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
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
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
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
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
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
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
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
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru