$custprice = $_POST['custprice'];
foreach ($custprice as $key => $value) {
if($value > 0){
$sql3 = "INSERT INTO price_file(id,prod_code,price)
VALUES($lastid,'$key',$value)";
$result2 = $db->query($sql3);
if($result2){
$prompt = 'worked';
return $prompt;
}
}
}
输出
[custprice] => Array
(
[BACC] =>
[SHC] =>
[BML] =>
[HTL] => 90
)
上面的输出是我想要的。
但是,如果我稍稍更改代码并期望获得相同的输出,但是获得不同的输出。
代码
n=input()
y=n.split()
a=([int(x) for x in y])
print(a)
输出
python .\input_into_list.py
1 2 3
[1, 2, 3]
请说明第一个代码中的第3行与第二个代码中的第3行和第4行之间的区别。
谢谢。
答案 0 :(得分:2)
第一个示例是所谓的列表理解。它根据您的值(按顺序)以及在这种情况下的输入cols = ['Column1']
for col in cols:
dt[f'New {col}'] = (dt.groupby(pd.qcut(dt[col], 3))[col]
.transform(lambda x: x.max() + x.min()) / 2)
print (dt)
Column1 New Column1
0 1 2.0
1 2 2.0
2 3 2.0
3 4 5.0
4 5 5.0
5 6 5.0
6 7 8.0
7 8 8.0
8 9 8.0
创建一个列表。鼓励列表理解,因为它的简单性和明确的目的可以返回列表。
y
您的第二个示例是a = [int(x) for x in y]
循环,与列表理解不同,循环可用于遍历序列并执行多个复杂任务。但是,在您的示例变量for
中,它会不断更新为a
中的最新值。
y
要获得与列表理解相同的结果:
for i in y:
print(i)
a = [i]
为简短起见,如果您打算返回列表,请尽可能使用列表理解功能。对于Python以及任何语言,都没有一成不变的规则,因此请谨慎考虑效率和可读性。
答案 1 :(得分:0)
在第一个脚本中,您将所有值添加到一行中。
在第二个脚本中,您将在每个循环上重新分配一个。
尝试附加到a。
n=input()
y=n.split()
a = []
for x in y:
a.append(int(x))
print(a)
答案 2 :(得分:0)
在创建列表的第一个代码中,然后在第二个代码中将其命名为“ a”,您必须为第二个代码的每个循环更改“ a”的值
n=input()
a=[]
y=n.split()
for x in y:
a.append(int(x))
print(a)
编辑
n=input()
a=[]
y=n.split()
for x in y:
a.append(int(x)) # Remove brackets [] that means that you append a list in a list
for i in a:
print(i) # or print(i,end='') if you want to print it in one line
答案 3 :(得分:0)
主要区别在于外观和运行速度。列表理解更短,更易于理解和更快的执行时间。
在代码中,如果要使其与列表理解相同,则需要将每个元素附加到列表:
n=input()
y=n.split()
a=[]
for x in y:
a.append(int(x))
print(a)
这将为您提供与列表理解一相同的结果。另外,n.split()
方法本身将输入作为元素列表返回。所以:
n=input()
y=n.split()
print(y)
这与上面的相同。只是最后一条评论,当您使用 list comprehension 或其他分配列表时,您无需将元素包装在方括号内,例如:()
n=input()
y=n.split()
a=[int(x) for x in y]
print(a)
答案 4 :(得分:-3)
这是缩进错误:
n=input()
y=n.split()
for x in y:
a=([int(x)])
print(a,end=' ')