理解:从 PHP 数组到 Python?
Posted
技术标签:
【中文标题】理解:从 PHP 数组到 Python?【英文标题】:To understand: From PHP Array to Python? 【发布时间】:2010-12-19 09:24:15 【问题描述】:这是 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 中有什么?
【问题讨论】:
不要试图将你的集合让我们称之为“模式”直接翻译成 Python,你可能会产生非常 [unpythonic][1] 的代码。相反,在你跳键盘之前,先花时间学习基本的 Python 数据结构。 [1]:faassen.n--tree.net/blog/view/weblog/2005/08/06/0 请注意,您可以使用$php = range(1,10);
代替 $php = array(1,2,3,4,5,6,7,8,9,10);
(实际上在 Python 中也是如此)。
@therefromhere:至少在 Python 中是 range(1,11),即上限为 n+1。
@python:你有什么理由不接受我的回答? :)
@intgr 看起来他在博客上写了你的答案
【参考方案1】:
所有这些都非常明显。我只列出了 Pythonic 方法来做这些事情。更新:示例现在应该适用于 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 中创建 dict [字典],而不是列表/):
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)))
【讨论】:
如果第一个示例确实迭代整数,则在打印这些值时需要使用 str(item)。 这清楚地显示了 python 语法是如何不那么冗长,更清楚 php 恕我直言 我正在寻找这个想要的东西......谢谢ssssssssssssss PHP 中的关联数组和 Python 中的 dicts 之间的一个重要区别是 PHP 中的关联数组的顺序与您设置的一样,而 Python 的 dicts 的顺序是任意的,或者更确切地说,它们是简直是无序的。这与 PHP 非常棒的文档一起是我对 PHP 的怀念。否则我是一个快乐的 Python 新手。 @donut 从 Python 3.6 开始,dict 键现在可以保持顺序。但这是一个实现细节,不应依赖。【参考方案2】:这个问题让我想起了一位智者说过,“给一个人一条鱼,你已经喂饱了他今天。教一个人钓鱼,你已经喂了他一辈子……”
【讨论】:
我认为这句话与这个问题无关。有可比较的例子是一个很好的学习工具。这就是所有这些——例子——提问者不希望我们为他解决他的问题。【参考方案3】:“Python 中有什么?”,一个颇具哲学意味的问题,总是一个很好的开始一天的方式。我认为在 Python 中的内容最好由 Python 之禅来回答(在交互式 shell 中键入 import this
):
对不起,忍不住了。为了回答您要问的问题,我将您引导至Python documentation,特别是与lutz 链接的有关looping techniques 的部分。
除非文档中的语法完全让您感到困惑(尽管我对此表示怀疑),否则您将看到 Python 中如何定义循环。一旦你理解了这一点,你就会明白,从定义上讲,它们与你在 PHP 中习惯的循环有何不同(在语法上)。
还不满意?嗯...我想您应该再次阅读该教程。然后,回来提出可以产生具体答案的具体问题。对于这么广泛的问题,您找不到任何灵丹妙药。
【讨论】:
非常感谢。谢谢大家。我永远欢迎...:) +1:“然后,回来问一些具体的问题,可以得到具体的答案。”这确实是这个问题的问题。似乎作者没有意识到这是一个关于循环和数据结构如何在 Python 中工作的广泛主题,而不是一个具体问题。【参考方案4】:您可以阅读the Python tutorial 中的循环介绍。
【讨论】:
谢谢Lutz。如果你能给我一个相应的代码(php->python)。我在这里发布的内容会很棒。 我学得很快。我暂时从php切换到python。谢谢。 如果你学得很快,看完 Python 教程应该可以自己回答问题了。 事实上。我现在正在阅读。当你发送给我时,谢谢。但是在这里人们有动力快速分享,当我阅读你的链接时。其他人很快就会理解..非常感谢 Lutz以上是关于理解:从 PHP 数组到 Python?的主要内容,如果未能解决你的问题,请参考以下文章