理解:从PHP数组到Python?
这是在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 个回答
你可以在Python教程中找到关于循环的介绍。
“Python里面有什么?”这是个挺哲学的问题,早上问这个问题总是个不错的开始。我觉得可以通过“Python之禅”来回答这个问题(在交互式命令行中输入 import this
):
- 美丽胜于丑陋。
- 明确胜于隐晦。
- 简单胜于复杂。
- 复杂胜于复杂难懂。
- 扁平胜于嵌套。
- 稀疏胜于密集。
- 可读性很重要。
- 特殊情况不够特殊,不应该打破规则。
- 虽然实用性胜过纯粹性。
- 错误不应该被忽视。
- 除非明确地被忽视。
- 面对模糊的情况,拒绝猜测的诱惑。
- 应该有一种——最好只有一种——明显的方法来做这件事。
- 虽然这种方法一开始可能不明显,除非你是荷兰人。
- 现在做总比永远不做要好。
- 虽然永远不做往往比“现在”要好。
- 如果实现起来很难解释,那就是个坏主意。
- 如果实现起来容易解释,那可能是个好主意。
- 命名空间是个非常棒的主意——我们应该多用这些!
抱歉,我忍不住了。要回答你想问的问题,我建议你去看看 Python文档,特别是关于 循环技术 的部分,这个链接是 lutz 提供的。
除非文档中的语法让你完全困惑(不过我不太相信会这样),你会看到Python中是如何定义循环的。一旦你理解了这一点,你就会明白它们在语法上与PHP中的循环有什么不同。
还是不满意?嗯……我想你应该再读一遍教程。然后,回来问一些具体的问题,这样才能得到具体的答案。对于这么广泛的问题,你不会找到什么灵丹妙药。
这些内容其实都挺明显的。我只是列出了一些更符合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)))