理解:从PHP数组到Python?

15 投票
4 回答
14139 浏览
提问于 2025-04-15 16:17

这是在PHP和其他编程语言中常见的任务。我是从PHP开发者转过来的。
我想确保这些内容是正确的。
有没有懂Python的朋友可以帮我更清楚地理解一下?
这是我从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中是什么?

4 个回答

3

你可以在Python教程中找到关于循环的介绍。

10

“Python里面有什么?”这是个挺哲学的问题,早上问这个问题总是个不错的开始。我觉得可以通过“Python之禅”来回答这个问题(在交互式命令行中输入 import this):

  • 美丽胜于丑陋。
  • 明确胜于隐晦。
  • 简单胜于复杂。
  • 复杂胜于复杂难懂。
  • 扁平胜于嵌套。
  • 稀疏胜于密集。
  • 可读性很重要。
  • 特殊情况不够特殊,不应该打破规则。
  • 虽然实用性胜过纯粹性。
  • 错误不应该被忽视。
  • 除非明确地被忽视。
  • 面对模糊的情况,拒绝猜测的诱惑。
  • 应该有一种——最好只有一种——明显的方法来做这件事。
  • 虽然这种方法一开始可能不明显,除非你是荷兰人。
  • 现在做总比永远不做要好。
  • 虽然永远不做往往比“现在”要好。
  • 如果实现起来很难解释,那就是个坏主意。
  • 如果实现起来容易解释,那可能是个好主意。
  • 命名空间是个非常棒的主意——我们应该多用这些!

抱歉,我忍不住了。要回答你想问的问题,我建议你去看看 Python文档,特别是关于 循环技术 的部分,这个链接是 lutz 提供的。

除非文档中的语法让你完全困惑(不过我不太相信会这样),你会看到Python中是如何定义循环的。一旦你理解了这一点,你就会明白它们在语法上与PHP中的循环有什么不同。

还是不满意?嗯……我想你应该再读一遍教程。然后,回来问一些具体的问题,这样才能得到具体的答案。对于这么广泛的问题,你不会找到什么灵丹妙药。

30

这些内容其实都挺明显的。我只是列出了一些更符合Python风格的做法。更新一下:现在的例子在Python 2和Python 3中都能运行。在Python 2中,你可以用xrange()替代range(),用iteritems()替代items(),这样会更高效。

例子 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(注意{...}在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>')

或者可以用更符合Python风格的写法:

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

撰写回答