use*_*569 0 python list-comprehension
从本质上讲,我写了一组不同的代码,这些代码将给定商店的名称和购物清单的总价调用在一起.
由于元组只使用第一个元素进行比较(除非它们是相等的)我已经设置它们以便总值是第一个.
它将循环遍历myprices列表长度的索引,并将比较当前元组是否大于下一个元组.
如果它收到索引超出范围错误,它将通过.
我使用单个元组中的[0]和[1]位置来命名程序是否正在访问商店的价格或名称.
它将比较元组的价格(自动),然后它将使bestprice =具有最优价格的商店的名称.
这实际上是C编程被移植到python中.
我发现pythonic方式表达单循环,但不是if/else语句,而不是两者的组合.
你有任何改进的建议,或者我正在接受的任何范例,可以在python中替换.
myprices = [(6, shop1), (10, shop2)]
bestprice = []
for i in range(len(myprices)):
try:
if myprices[i] < myprices[i+1]:
bestprice = myprice[i][1]
else:
bestprice = myprices [i+1][1]
except IndexError:
pass
Run Code Online (Sandbox Code Playgroud)
在Python中查找集合的最大值的惯用方法是max内置函数:
bestprice = max(myprices)[1] # index of 1 to get the shop name
Run Code Online (Sandbox Code Playgroud)
你的例子实际上没有用于循环或理解.我不明白为什么你最初bestprice希望它是一个(单个)字符串而不是列表时预分配为空列表.
如果您确实想要一个列表,那么您可以替换以下循环:
result = []
for elem in collection:
if cond:
result.append(myfunc(elem))
Run Code Online (Sandbox Code Playgroud)
具有以下列表理解:
result = [myfunc(elem) for elem in collection if cond]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |