Чтобы понять: от PHP Array до Python?

Это общая задача в PHP и других языках программирования. Я перешел из PHP-разработчика. Я хочу убедиться в этих коллекциях. У кого-нибудь есть хорошие на питоне, пожалуйста, помогите мне понять ясно. Это мои коллекции из кода PHP.

<?php
$php = array(1,2,3,4,5,6,7,8,9,10);
for ($i = 0; $i < 10 ; $i ++)
echo $php[$i]."<br>";
?>

= > Что находится в Python?

<?php

for ($i = 0; $i < 10 ; $i ++)
echo $php[$i] = $i +1 ;
?>

= > Что находится в Python?

<?php
$php = array(1,2,3,4,5,6,7,8,9,10);
foreach ($php as $value)
echo $value."<br>";
?>

= > Что находится в Python?

<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?>

= > Что находится в Python?

<?php
$arr = array("mot"=>"one", "hai"=>"two","ba"=> "three");
foreach ($arr as $key => $value) {
    echo "Key: $key; Value: $value<br />\n";
}
?>

= > Что находится в Python?

<?php
$arr = array("one", "two","three");
while (list($key, $value) = each($arr)) {
    echo "Key: $key; Value: $value<br />\n";
}
?>

= > Что находится в Python?

<?php
$arr = array("one", "two","three");
while ($element = each($arr)) {
    echo "Key: $element['key']; Value: $element['value']<br />\n";
}
?>

= > Что находится в Python?

<?php
$products = array( array("ITL","INTEL","HARD"),
                        array("MIR", "MICROSOFT","SOFT"),
                        array("Py4C", "pythonkhmer.wordpress.com","TUTORIAL")
                         );
for ($row = 0; $row < 3; $row++)
{
    for ($col = 0; $col <3; $col++)
        {
         echo "|".$products[$row][$col];
         }
echo "<br>";
}
?>

= > Что находится в Python?

Ответ 1

Все это совершенно очевидно. Я только перечисляю Pythonic способы сделать это. Обновление. Теперь примеры должны работать как на Python 2, так и на Python 3. В Python 2 вы можете заменить xrange() для range() и iteritems() для элементов() для эффективности.

Пример 1

PHP

$php = array(1,2,3,4,5,6,7,8,9,10);
for ($i = 0; $i < 10 ; $i ++)
echo $php[$i]."<br>";

Python (обычно вы перебираете списки в Python, а не получаете доступ по индексу):

lst = [1,2,3,4,5,6,7,8,9,10]
for item in lst:
    print(str(item) + "<br>")

Пример 2

for ($i = 0; $i < 10 ; $i ++)
echo $php[$i] = $i +1 ;

Python:

lst = range(1, 11)
for item in lst:
    print(item)

Или, может быть:

lst = []
for i in range(10):
    lst.append(i + 1)
    print(lst[-1])     # prints out last element

Пример 3

$php = array(1,2,3,4,5,6,7,8,9,10);
foreach ($php as $value)
echo $value."<br>";

То же, что и первый

Пример 4

$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}

Python:

lst = [1, 2, 3, 4]
lst = [val * 2 for val in lst]

Пример 5

$arr = array("mot"=>"one", "hai"=>"two","ba"=> "three");
foreach ($arr as $key => $value) {
    echo "Key: $key; Value: $value<br />\n";
}

Python (обратите внимание, что {...} создает dict [словарь] в Python, а не список /):

dct = {'mot': 'one', 'hai': 'two', 'ba': 'three'}
for key, value in dct.items():
    print("Key: %s; Value: %s<br />" % (key, value))

Пример 6

$arr = array("one", "two","three");
while (list($key, $value) = each($arr)) {
    echo "Key: $key; Value: $value<br />\n";
}

Python:

lst = ['one', 'two', 'three']
for key, value in enumerate(lst):
    print("Key: %d; Value: %s<br />" % (key, value))

Пример 7

$arr = array("one", "two","three");
while ($element = each($arr)) {
    echo "Key: $element['key']; Value: $element['value']<br />\n";
}

Нет прямого эквивалента Python.

Пример 8

$products = array( array("ITL","INTEL","HARD"),
                        array("MIR", "MICROSOFT","SOFT"),
                        array("Py4C", "pythonkhmer.wordpress.com","TUTORIAL")
                         );
for ($row = 0; $row < 3; $row++)
{
    for ($col = 0; $col <3; $col++)
    {
        echo "|".$products[$row][$col];
    }
    echo "<br>";
}

Python:

products = [['ITL', 'INTEL', 'HARD'],
    ['MIR', 'MICROSOFT', 'SOFT'],
    ['Py4C', 'pythonkhmer.wordpress.com', 'TUTORIAL']]

for product in products:
    for item in product:
        print('|' + item)
    print('<br>')

Или, может быть, более Pythonic версия:

for product in products:
    print('|%s<br>' % ('|'.join(product)))

Ответ 2

"Что есть в Python?", довольно философский вопрос, всегда отличный способ начать день. Я думаю, что на Python лучше всего ответить Zen of Python (тип import this в интерактивной оболочке):

  • Красивая лучше, чем уродливая.
  • Явный лучше, чем неявный.
  • Простой лучше, чем сложный.
  • Комплекс лучше, чем сложный.
  • Плоский лучше, чем вложенный.
  • Рельеф лучше плотного.
  • Показатели удобочитаемости.
  • Специальные случаи не являются достаточно сложными, чтобы нарушать правила.
  • Хотя практичность превосходит чистоту.
  • Ошибки никогда не должны проходить молча.
  • Если явно не отключено.
  • Перед лицом двусмысленности откажитесь от соблазна угадать.
  • Должен быть один - и желательно только один - простой способ сделать это.
  • Хотя этот путь может быть не очевидным сначала, если вы не голландский.
  • Теперь лучше, чем никогда.
  • Хотя никогда не бывает лучше, чем сейчас.
  • Если внедрение трудно объяснить, это плохая идея.
  • Если внедрение легко объяснить, это может быть хорошей идеей.
  • Пространства имен - одна хорошая идея - позвольте сделать еще больше!

Извините, не смог сопротивляться. Чтобы ответить на вопрос, который вы хотели задать, я направляю вас в Python documentation, в частности раздел методы петли, связанные с lutz.

Если синтаксис в документации не сможет полностью запутать вас (хотя я сомневаюсь), вы увидите, как цикл определен в Python. И как только вы это поняли, вы поймете, по определению, как они отличаются (синтаксически) от циклов, которые вы использовали в PHP.

Все еще не удовлетворены? Хм... Думаю, вам следует снова прочитать учебник. Затем вернитесь и задайте конкретные вопросы, которые могут дать конкретные ответы. Вы не найдете серебряных пулей для такого широкого вопроса.

Ответ 3

Вы можете прочитать введение в циклы учебник Python.

Ответ 4

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