Python 如何使用基本操作更改列表中的值?

Python 如何使用基本操作更改列表中的值?,python,arrays,list,math,python-3.x,Python,Arrays,List,Math,Python 3.x,好的,我给自己做了挑战,这样我就可以做一些编程了 然而,我面临一些问题 adtprice = {19.99 , 49.99} chldprice = adtprice * (3/4) - 7.5 这是我得到的结果 Traceback (most recent call last): File "C:/Users/Owner/Desktop/Programming Scripts/park.py", line 2, in <module> chldprice = adtprice *

好的,我给自己做了挑战,这样我就可以做一些编程了

然而,我面临一些问题

adtprice = {19.99 , 49.99}
chldprice = adtprice * (3/4) - 7.5
这是我得到的结果

Traceback (most recent call last):
File "C:/Users/Owner/Desktop/Programming Scripts/park.py", line 2, in <module>
chldprice = adtprice * (3/4) - 7.5
TypeError: unsupported operand type(s) for *: 'set' and 'float'
回溯(最近一次呼叫最后一次):
文件“C:/Users/Owner/Desktop/Programming Scripts/park.py”,第2行,在
chldprice=adtpprice*(3/4)-7.5
TypeError:不支持*:“set”和“float”的操作数类型

我希望它简单易用,因为我会经常使用adtprice和chldrice。

这可能就是你想要的。首先,一个集合不能乘以一个数字,您可以使用列表理解,而
3/4
将只返回
0
(假设Python 2.x)。我假设您想要
3.0/4

adtprice = [19.99 , 49.99]
chldprice = [a * (3.0/4) - 7.5 for a in adtprice]
>>> adtprice = [19.99 , 49.99]
>>> chldprice = [price*(3.0/4) - 7.5 for price in adtprice]
>>> chldprice
[7.4925, 29.9925]

我想你想要的是计算每个成人价格的儿童价格。您没有列表,但有一个集合,因此这应该有帮助:

adult_prices = [19.99, 49.99]
child_prices = []

for price in adult_prices:
    child_price = price * (3.0/4.0) - 7.5
    child_prices.append(child_price) # Add each child price to the array
    print("For adult price {}, child price is {}".format(price, child_price))

 print(adult_prices)
 print(child_prices)

首先,你有一个集合,而不是一个列表。使用方括号而不是大括号创建列表

正如其他人提到的,您需要对列表中的各个元素进行操作

您可以使用列表来执行此操作

adtprice  = [19.99, 49.99]
chldprice = [p * (3./4) - 7.5
             for p in adtprice]
或者使用
映射
,如果您愿意:

adtprice  = [19.99, 49.99]
chldprice = map(lambda p: p * (3./4) - 7.5,
                adtprice)
<>如果您发现自己希望按顺序执行这些类型的批量操作,请考虑使用。它是一组库,以简洁而强大的方式有效地处理矩阵和向量数学。例如:

adtprice  = numpy.array([19.99, 49.99])
chldprice = adtprice * (3./4) - 7.5

虽然其他答案也可以,但如果你真的想对值序列进行数学运算,我建议使用。它确实在这方面做得很好。下面是使用numpy数组时代码的外观:

import numpy as np

adult_prices = np.asarray([19.99, 49.99])
child_prices = adult_prices * (3.0/4) - 7.5  # math operations work item by item

print(child_prices) # prints "array([  7.4925,  29.9925])"
你可以用类似的方法做更多的事情。例如,如果只需要小数点后两位数字,则可以对结果进行四舍五入:

child_prices = np.round(adult_prices * (3.0/4) - 7.5, 2)

print(child_prices) # prints "array([  7.49,  29.99])"

你想在这里干什么?你不能将一个
集合
与一个数字相乘。你到底想做什么?顺便说一句,Python有时理解我们的语言;)试着与它对话。我希望chldprice是另一个数组,即{7.4925,29.9925}。我使用了
列表
而不是
集合
,但我得到了与您需要的相同答案。请参阅我下面的答案。{7.4925,29.9925}不是
数组
,而是。这是不同的。但是如果你想让我继续投票,你需要做
3.0/4
。正如其他人所说,3/4可能不是正确的方式。因为3/4==0。必须是smth像3./4不需要
3.0/4
,因为OP使用的是py3.x。@marounnaroun这里有更好的答案,将在几分钟内删除论题:();括号:[],有时称为“方括号”;大括号:{},有时称为“花括号”,以强调区别;“尖括号”:“和实体”或“小于”和“大于”符号的重载使用。在Python中:()表示元组(和生成器表达式),[]表示列表(和列表理解),{}表示字典和集合(及其生成器表达式)。“尖括号”在Python的语法中没有使用(就其本身而言)。@JimDennis,我知道这一点,但他解释了3种不同的方法。只是澄清了各种分隔符对的公认名称及其在Python中的用法。{}不是“有角度”的括号。@JimDennis是正确的。我说“尖括号”时打错了。我指的是花括号。事实上,这不是我想要的,但是它对其他人有用。我需要下载numpy吗?@Bugboy1028:是的,很遗憾,numpy不是Python标准库的一部分。