#python #python-3.x #list
#python #python-3.x #Список
Вопрос:
Ss = [0.806, 0.773, 1.1014, 0.786, 1.095, 0.803,
0.806, 0.785, 1.014, 0.586, 0.955, 1.088,
0.752, 1.010, 1.246, 0.879, 1.284]
S1 = [0.228, 0.220, 0.280, 0.231, 0.297, 0.226,
0.228, 0.231, 0.280, 0.174, 0.264, 0.295,
0.217, 0.279, 0.338, 0.247, 0.351]
Fs = [1.200, 1.200, 1.094, 1.200, 0.800, 1.200,
1.200, 1.200, 1.094, 1.266, 1.118, 1.065,
1.200, 1.096, 1.200, 0.800, 0.900]
F1 = [1.500, 1.500, 2.040, 1.500, 0.800, 1.500,
1.500, 1.500, 2.040, 1.500, 2.072, 2.010,
1.500, 2.042, 1.500, 0.800, 0.800]
SDS = [] # Short Term Design Acceleration Constant (Dimensionless)
SD1 = [] # 1 second Period Design Acceleration Constant (Dimensionless)
for i in range(len(F1)):
SDS.append(Ss[i]*Fs[i])
for i in range(len(F1)):
SD1.append(S1[i]*F1[i])
Я использую Anaconda — Spyder. Списки SDS и SD1 не отображаются как переменная. Я не смог найти свою ошибку. Я также пытаюсь открыть в Python IDLE, но он по-прежнему выдает ту же ошибку. Если там отсутствует какая-либо пунктуация, пожалуйста, скажите это.
Комментарии:
1. Кажется, работает нормально .
2. Я не совсем понимаю… в чем проблема?
3. Что именно вы подразумеваете под тем, что SDS и SD1 не отображаются как переменные? Можете ли вы объяснить немного подробнее? Если вы получаете какие-либо ошибки, пожалуйста, добавьте их также в свой вопрос.
4. Работает здесь. Я предполагаю, что какой-то скрытый символ в миксе. Или проблемы с кодировкой. Какая ОС и версия?
Ответ №1:
Сам код создает два списка, SDS
и SD1
(т. Е. Проблема не в коде Python). Если вы пытаетесь проверить эти переменные в проводнике переменных Spyder (который вы не указали, но я предполагаю, что здесь), и вы не можете их найти, убедитесь, что
- код выполняется в консоли Spyder,
- включено автоматическое обновление проводника переменных,
- Проводник переменных фактически открыт в графическом интерфейсе.
Честно говоря, я не пользователь Spyder, поэтому, возможно, я что-то упускаю.
PS: вы могли бы сделать циклы for более питоническими, выполнив итерацию с использованием zip
(включая пример для первого цикла). Вы можете называть ss_element
и fs_element
так, как вам нравится.
for ss_element, fs_element in zip(Ss, Fs):
SDS.append(ss_element * fs_element)
Или, что еще лучше, понимание списка.
SDS = [ss_element * fs_element for ss_element, fs_element in zip(Ss, Fs)
Но наиболее питоническим способом было бы использовать библиотеку, которая позволяет выполнять операции с чистыми элементами, например numpy
.
import numpy as np
Ss = np.array([0.806, 0.773, 1.1014, 0.786, 1.095, 0.803,
0.806, 0.785, 1.014, 0.586, 0.955, 1.088,
0.752, 1.010, 1.246, 0.879, 1.284])
Fs = np.array([1.200, 1.200, 1.094, 1.200, 0.800, 1.200,
1.200, 1.200, 1.094, 1.266, 1.118, 1.065,
1.200, 1.096, 1.200, 0.800, 0.900])
SDS = Ss * Fs
Комментарии:
1. Когда я сделал SDS как SdS, а SD1 как Sd1, ошибка полностью удалена. Может ли ошибка быть вызвана именами списков?
2. Ага! Хорошая находка! Должно быть, Spyder обрабатывает глобальные переменные (т. Е. переменные со всеми заглавными буквами) по-разному. Смотрите это и эту проблемы с GitHub.