Найти - Пользователи
Полная версия: Обращение к элементу массива-символу.
Начало » Python для новичков » Обращение к элементу массива-символу.
1
Smushems
Добрый вечер,ребят. Подскажите пожалуйста: хочу,чтобы сравнивая,в цикле считываемое имя элемента,сравнивалось с названием. :
  if t[i] == b'CE' and t[j] == 'CE':
Увеличиваю при этом маасив A на 1,после пробега по файлу массив А пуст,думаю,что неправильно сравниваю названия элементов,подскажите пожалуйста корректный синтаксис.

Элементы в файле прописаны,как CE,O и так далее. Пробовал ещё так:
 elif t[i]=="b'O'" and t[j]=="b'CE'":
terabayt
Если я правильно понял, то “СЕ” это значение в шестнадцатеричной записи?
Если да, то нужно
if t[i] == b'\xce' and t[j] == 'CE':
И если хотите нормального ответа, выкладывайте побольше кода! А то непонятно что такое t, i, j и т.д.
Smushems
t = np.loadtxt("ceo2_sphere_20.xyz", usecols=[0], unpack = True, skiprows = 2, dtype = "str")
x, y, z = np.loadtxt("ceo2_sphere_20.xyz", usecols=[1,2,3], unpack = True, skiprows = 2)
for i in range(1 , len(x)):
    for j in range (0, i):
        print(i)
        rbuf = find_r (x[i]-x[j], y[i] - y[j], z[i] - z[j])
        index = int (np.around(rbuf/dr))
        if t[i] == b'CE' and t[j] == 'CE':
            hist1[index] += 2*ff1*ff1/ff_av/ff_av
        elif t[i]=="b'O'" and t[j]=="b'CE'":
            hist2[index] += 2*ff1*ff2/ff_av/ff_av
        elif t[i]=="b'O'" and t[j]=="b'O'":
            hist3[index] += (2*ff2*ff2)/ff_av/ff_av

Вот так,вроде понятнее. CE-это название элемента в файле (Церий),то есть-это символы. Мне кажется,что я неправильно обращаюсь к элементу массива из символов.
terabayt
Это уже более понятно. Еще пример файла ceo2_sphere_20.xyz и я напишу Вам код и постараюсь объяснить!
Smushems
Извините,что так по частям получается выкладывать свой вопрос.

То есть там первый столбец-это те саме символы,к которым мне нужно обратиться и сравнить.
py.user.next
        print(i, j, t[i], t[j], type(t[i]), type(t[j]))
        if t[i] == b'CE' and t[j] == 'CE':

Smushems
Пробовал ещё так:
не надо пробовать, надо посмотреть, что там
Smushems
Там CE,когда прошу вывести маси t,в нём элементы записаны,как “CE”.
py.user.next
вставь print, который в предыдущем сообщении, и вывод сюда скопируй
terabayt
>>> A = 0
>>> B = 0
>>> for i in range(1 , len(x)):
...     for j in range (0, i):
...         if t[i] == 'CE' and t[j] == 'CE':
...             A += 1
...         elif t[i] == 'O' and t[j] == 'O':
...             B += 1
>>> A
3741
>>> B
21528
Так как я не зняю что такое find_r и dr, полностью скрипт я не смог проверить!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB