简称;如果;在python中,如果是追加到数组中
如果数组中还没有数据,我想使用内联if语句将数据追加到数组中,如中所示:简称;如果;在python中,如果是追加到数组中,python,python-2.7,if-statement,Python,Python 2.7,If Statement,如果数组中还没有数据,我想使用内联if语句将数据追加到数组中,如中所示: arr.append( data if not data in arr ) 但此代码返回: SyntaxError:无效语法 还有其他选择吗 arr if data in arr else arr.append(data) (如果数据已经存在于它的其他附件中,则返回arr不变。(是的,我们正在滥用副作用)) 内联if语句也必须包含else语句,如arr else 3中的data if not data 请注意,此示例不
arr.append( data if not data in arr )
但此代码返回:
SyntaxError:无效语法
还有其他选择吗
arr if data in arr else arr.append(data)
(如果数据
已经存在于它的其他附件中,则返回arr
不变。(是的,我们正在滥用副作用))
内联if语句也必须包含else语句,如arr else 3中的data if not data 请注意,此示例不起作用。使用:
arr.extend([data] if data not in arr else [])
例子
让我们从一个示例数组开始:
>>> arr = [1, 2, 3]
现在让我们尝试data=4
,它不在arr
中:
>>> data = 4
>>> arr.extend([data] if data not in arr else [])
>>> arr
[1, 2, 3, 4]
>>> data = 2
>>> arr.extend([data] if data not in arr else [])
>>> arr
[1, 2, 3, 4]
现在,让我们尝试使用data=2
,该值已经在arr
中:
>>> data = 4
>>> arr.extend([data] if data not in arr else [])
>>> arr
[1, 2, 3, 4]
>>> data = 2
>>> arr.extend([data] if data not in arr else [])
>>> arr
[1, 2, 3, 4]
这使得arr
保持不变
笔记
append
将附加某些内容。因为我们似乎只想在数据不在arr
中时追加数据,所以这不是正确的使用方法。方法extend
避免了这个问题[data]如果数据不在arr中,则如果数据不在arr中,则其他[]
将返回[data]
。否则,它将返回[]
arr.extend([])
保持arr
不变arr.extend([data])
将元素data
添加到arr
的末尾你需要一个
else
在那里的某个地方。这里没有“short if”。如果您想使用if
语句,只需使用if
语句。或者将其反转:if-not-data-in-arr:arr.append(data)
@PRMoureu,这应该是一个答案,而不是一个注释。您确实尝试过这个吗?好主意,但对我来说似乎行不通。是的,它行不通并返回“SyntaxError:invalid syntax”哇,谢谢你的精彩解释!一切都很完美!