Как получить положение объекта в списке?

Код не запускается / что-то похожее на части моего PHP-кода выводятся

Если вы не видите никакого результата из вашего кода PHP и / или видите части своего литерального исходного кода PHP на веб-странице вы можете быть уверены, что ваш PHP на самом деле не выполняется. Если вы используете View Source в своем браузере, вы, вероятно, видите весь исходный код PHP-файла. Поскольку PHP-код встроен в теги , браузер попытается интерпретировать их как HTML-теги, и результат может выглядеть несколько смущенным.

Чтобы на самом деле запустить ваши PHP-скрипты, вам нужно:

  • веб-сервер, который выполняет ваш скрипт
  • , чтобы установить расширение файла на .php, в противном случае веб-сервер не будет интерпретировать его как таковой *
  • для доступа ваш .php-файл через веб-сервер

* Если вы не переконфигурируете его, все может быть настроено.

Это последнее особенно важно. Двойной щелчок по файлу, скорее всего, откроет его в вашем браузере, используя такой адрес, как:

file://C:/path/to/my/file.php

Это полностью обходит любой веб-сервер, который у вас может быть запущен, и файл не интерпретируется. Вам нужно посетить URL-адрес файла на вашем веб-сервере, вероятно, что-то вроде:

http://localhost/my/file.php

Вы также можете проверить, используете ли вы короткие открытые теги вместо и ваша PHP-конфигурация отключила короткие открытые теги.

Также см. PHP-код не выполняется, вместо этого код отображается на странице

158
задан Charlie Martin 10 August 2016 в 21:23
поделиться

5 ответов

Hmmm. Был ответ с пониманием списка здесь, но он исчез.

Здесь:

 [i for i,x in enumerate(testlist) if x == 1]

Пример:

>>> testlist
[1, 2, 3, 5, 3, 1, 2, 1, 6]
>>> [i for i,x in enumerate(testlist) if x == 1]
[0, 5, 7]

Обновление:

Хорошо, Вы хотите выражение генератора, у нас будет выражение генератора. Вот понимание списка снова, в для цикла:

>>> for i in [i for i,x in enumerate(testlist) if x == 1]:
...     print i
... 
0
5
7

Теперь мы создадим генератор...

>>> (i for i,x in enumerate(testlist) if x == 1)
<generator object at 0x6b508>
>>> for i in (i for i,x in enumerate(testlist) if x == 1):
...     print i
... 
0
5
7

и достаточно изящно, мы можем присвоить это переменной и использовать ее оттуда...

>>> gen = (i for i,x in enumerate(testlist) if x == 1)
>>> for i in gen: print i
... 
0
5
7

И думать я раньше писал ФОРТРАН.

269
ответ дан Charlie Martin 23 November 2019 в 21:38
поделиться
for i in xrange(len(testlist)):
  if testlist[i] == 1:
    print i

xrange вместо диапазона согласно просьбе (см. комментарии).

10
ответ дан jakber 23 November 2019 в 21:38
поделиться

Использование перечисляет:

testlist = [1,2,3,5,3,1,2,1,6]
for position, item in enumerate(testlist):
    if item == 1:
        print position
40
ответ дан jfs 23 November 2019 в 21:38
поделиться

Если Ваш список стал достаточно большим, и Вы только ожидали находить значение в редком количестве индексов, полагать, что этот код мог выполняться намного быстрее, потому что Вы не должны выполнять итерации каждого значения в списке.

lookingFor = 1
i = 0
index = 0
try:
  while i < len(testlist):
    index = testlist.index(lookingFor,i)
    i = index + 1
    print index
except ValueError: #testlist.index() cannot find lookingFor
  pass

, Если Вы ожидаете находить значение много, необходимо, вероятно, просто добавить "индекс" к списку и распечатать список в конце, чтобы сэкономить время на повторение.

1
ответ дан 23 November 2019 в 21:38
поделиться
testlist = [1,2,3,5,3,1,2,1,6]
for id, value in enumerate(testlist):
    if id == 1:
        print testlist[id]

Думаю, это именно то, что вам нужно. ;-) «id» всегда будет индексом значений в списке.

-2
ответ дан 23 November 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: