草庐IT

python - 按元素添加两个元组

我只是想知道是否有一种特别pythonic的方式来按元素添加两个元组?到目前为止(a和b是元组),我有map(sum,zip(a,b))我的预期输出是:(a[0]+b[0],a[1]+b[1],...)并且可能的称量是给a0.5重量和b0.5重量,等等。(我正在尝试取加权平均值)。效果很好,但如果我想添加权重,我不太确定该怎么做。谢谢 最佳答案 压缩它们,然后对每个元组求和。[sum(x)forxinzip(a,b)]编辑:这是一个更好但更复杂的版本,它允许加权。fromitertoolsimportstarmap,islice,i

python - 如何以原始语言(不是 u'foo' 形式)打印 unicode 字符串的元组

我有一个unicode对象的元组列表:>>>t=[('亀',),('犬',)]打印出来,我得到:>>>printt[('\xe4\xba\x80',),('\xe7\x8a\xac',)]我猜这是这些字符串的utf-8字节码表示的列表?但我想看到打印出来的是,惊喜:[('亀',),('犬',)]但是我在将字节码恢复为人类可读的形式时遇到了很多麻烦。 最佳答案 butwhatIwanttoseeprintedoutis,surprise:[('亀',),('犬',)]您想在什么地方打印出来?因为如果是控制台,则完全不能保证您的控制台可

python - 在 Python 中创建多个项目的元组 n 次

一个列表可以被创建n次:a=[['x','y']]*3#Output=[['x','y'],['x','y'],['x','y']]但我想以这种方式创建一个元组,但它不会返回与列表中相似的结果。我正在做以下事情:a=(('x','y'))*4#Output=('x','y','x','y','x','y','x','y')Expected_output=(('x','y'),('x','y'),('x','y'),('x','y'))有什么建议吗?谢谢。 最佳答案 外括号只是分组括号。您需要添加一个逗号才能使外壳成为一个元组:a=(

python - 合并具有相同键的元组

如何合并具有相同键的元组list_1=[("AAA",[123]),("AAA",[456]),("AAW",[147]),("AAW",[124])]然后把它们变成list_2=[("AAA",[123,456]),("AAW",[147,124])] 最佳答案 最高效的方法是使用collections.defaultdict字典将数据存储为扩展列表,然后在需要时转换回元组/列表:importcollectionslist_1=[("AAA",[123]),("AAA",[456]),("AAW",[147]),("AAW",[1

python - 从键为元组的字典创建数据框

我有以下字典,键为元组:d={('first','row'):3,('second','row'):1}我想创建一个包含3列的数据框:Col1、Col2和Col3,它应该如下所示:Col1Col2Col3firstrow3secondrow4除了逐对解析dict之外,我不知道如何拆分元组。 最佳答案 先构造一个Series,然后重新设置索引就会得到一个DataFrame:pd.Series(d).reset_index()Out:level_0level_100firstrow31secondrow1您可以在之后重命名列:df=pd

python - 更新元组中的列表

这个问题在这里已经有了答案:Appendtoalistdefinedinatuple-isitabug?[duplicate](4个答案)关闭6年前。我只是在解释器中玩弄,遇到了一些我不明白的东西。当我创建一个以列表作为元素之一的元组,然后尝试更新该列表时,会发生一些奇怪的事情。例如,当我运行这个时:tup=(1,2,3,[4,5])tup[3]+=[6]我得到:TypeError:'tuple'objectdoesnotsupportitemassignment这正是我所期望的。然而,当我再次引用元组时,我得到:>>>tup(1,2,3,[4,5,6])所以即使python抛出异常,

python - 对包含元组的元组进行排序

我有以下元组,其中包含元组:MY_TUPLE=(('A','Apple'),('C','Carrot'),('B','Banana'),)我想根据内部元组中包含的second值对该元组进行排序(即,对Apple、Carrot、Banana进行排序,而不是对A、B、C进行排序)。有什么想法吗? 最佳答案 fromoperatorimportitemgetterMY_SORTED_TUPLE=tuple(sorted(MY_TUPLE,key=itemgetter(1)))或者没有itemgetter:MY_SORTED_TUPLE=t

python - 在 Python 中处理单值元组的最佳实践是什么?

我正在使用第3方库函数,它从文件中读取一组关键字,并且应该返回一个值元组。只要至少有两个关键字,它就能正确执行此操作。但是,在只有一个关键字的情况下,它返回一个原始字符串,而不是大小为1的元组。这是特别有害的,因为当我尝试做类似的事情时forkeywordinlibrary.get_keywords():#Dosomethingwithkeyword,在单个关键字的情况下,for连续迭代字符串的每个字符,在运行时或其他情况下不会抛出异常,但对我来说完全没用.我的问题有两个方面:很明显,这是库中的错误,我无法控制。我怎样才能最好地解决它?其次,一般来说,如果我正在编写一个返回元组的函数,

python - 迭代元组列表

我正在寻找一种干净的方法来迭代元组列表,其中每个元组都是一对,例如[(a,b),(c,d)...]。最重要的是,我想更改列表中的元组。标准做法是避免在更改列表的同时迭代它,那么我应该怎么做?这就是我想要的:foriinrange(len(tuple_list)):a,b=tuple_list[i]#updateb'sdata#updatetuple_list[i]tobe(a,newB) 最佳答案 只需替换列表中的元组;您可以在遍历列表时更改列表,只要您避免添加或删除元素:fori,(a,b)inenumerate(tuple_li

python - 在 Python 中,为什么元组可散列而不是列表?

在下面,当我尝试散列列表时,它给了我一个错误,但它适用于元组。猜猜它与不变性有关。有人可以详细解释一下吗?列表x=[1,2,3]y={x:9}Traceback(mostrecentcalllast):File"",line1,inTypeError:unhashabletype:'list'元组z=(5,6)y={z:89}print(y){(5,6):89} 最佳答案 字典和其他对象使用hashes真正快速地存储和检索项目。这一切的机制都发生在“幕后”——你作为程序员不需要做任何事情,Python会在内部处理这一切。基本思想是,