How to take the beginning and end parts of a list with simpler syntax?Calling Table with custom...
First amendment and employment: Can a police department terminate an officer for speech?
How are you supposed to know the strumming pattern for a song from the "chord sheet music"?
What should I call bands of armed men in Medieval Times?
What are the uses and limitations of Persuasion, Insight, and Deception against other PCs?
A tool to replace all words with antonyms
Wherein the Shatapatha Brahmana it was mentioned about 8.64 lakh alphabets in Vedas?
Y2K... in 2019?
How does "Te vas a cansar" mean "You're going to get tired"?
Blocking people from taking pictures of me with smartphone
Can a fight scene, component-wise, be too complex and complicated?
(11 of 11: Meta) What is Pyramid Cult's All-Time Favorite?
Does a code snippet compile? Or does it get compiled?
Can you castle with a "ghost" rook?
Are differences between uniformly distributed numbers uniformly distributed?
Is refreshing multiple times a test case for web applications?
Plausibility of Ice Eaters in the Arctic
Should I ask for permission to write an expository post about someone's else research?
What is my malfunctioning AI harvesting from humans?
Different inverter (logic gate) symbols
Bitcoin successfully deducted on sender wallet but did not reach receiver wallet
How to avoid the "need" to learn more before conducting research?
How to mark beverage cans in a cooler for a blind person?
Who are these characters/superheroes in the posters from Chris's room in Family Guy?
What game uses dice with sides powers of 2?
How to take the beginning and end parts of a list with simpler syntax?
Calling Table with custom iteratorExpectation over a list with nested-mapped expressionsDeleting powers of a common prime except the highest one from a list with further only primesChange orientation of GradientOrientationFilter from high value to lowHow to return the unevaluated variable names from a list of variables which have been declaredHow can I make ListPlot use my iteration as the x coord?Build a list from applying a recursive function on another listHow to split list into segments based on first element of sublist, and remove ineligible segments
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}
$begingroup$
So basically you have a table of some values, let's call it a
:
a=Table[n,{n,10}];
(*{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}*)
And you want to take the beginning and end parts of the table, within the same line, and do something with them. It is my intention to change them all to 0, but really you could change them to some other variable, say b
. We want the parts of the list that do not include some inner values, we'll do {4,5,6}
which happen to correspond to the indexes 4 through 6, convenient, no?
a[[Cases[a, (Except[Alternatives @@ Range[4, 6]])]]] = b; a
(*{b, b, b, 4, 5, 6, b, b, b, b}*)
What's a simpler syntax for this? How can we call the end and beginning values of a list in a simpler manner?
a[[Cases[a, (Except[Alternatives @@ Range[4, 6]])]]]
(*{1, 2, 3, 7, 8, 9, 10}*)
The ideal input would be, to me, something like
a[[1;;3;7;;10]]
(*{1, 2, 3, 7, 8, 9, 10}*)
But this gives
(*{7, 8, 9, 10}*)
As expected.
How can we simplify the syntax to call the beginning and end parts of a list, leaving out some chosen middle portion?
list-manipulation syntax
$endgroup$
|
show 6 more comments
$begingroup$
So basically you have a table of some values, let's call it a
:
a=Table[n,{n,10}];
(*{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}*)
And you want to take the beginning and end parts of the table, within the same line, and do something with them. It is my intention to change them all to 0, but really you could change them to some other variable, say b
. We want the parts of the list that do not include some inner values, we'll do {4,5,6}
which happen to correspond to the indexes 4 through 6, convenient, no?
a[[Cases[a, (Except[Alternatives @@ Range[4, 6]])]]] = b; a
(*{b, b, b, 4, 5, 6, b, b, b, b}*)
What's a simpler syntax for this? How can we call the end and beginning values of a list in a simpler manner?
a[[Cases[a, (Except[Alternatives @@ Range[4, 6]])]]]
(*{1, 2, 3, 7, 8, 9, 10}*)
The ideal input would be, to me, something like
a[[1;;3;7;;10]]
(*{1, 2, 3, 7, 8, 9, 10}*)
But this gives
(*{7, 8, 9, 10}*)
As expected.
How can we simplify the syntax to call the beginning and end parts of a list, leaving out some chosen middle portion?
list-manipulation syntax
$endgroup$
1
$begingroup$
Select[ a, ! MemberQ[ {4, 5, 6}, #] & ]
$endgroup$
– LouisB
10 hours ago
1
$begingroup$
Complement[ a, {4, 5, 6} ]
$endgroup$
– LouisB
10 hours ago
1
$begingroup$
Cheating a little, we could write(a[[#]] = b) & /@ {1 ;; 3, 7 ;; 10}
.
$endgroup$
– WReach
9 hours ago
1
$begingroup$
If it's the values, then inTable[n^2,{n,10}]
the initial segment would be the span1 ;; 1
and the final segment would be3 ;; 10
and the excluded segment (the positions not to be changed) would be2 ;; 2
, if the excluded values were 4, 5, 6 -- no?
$endgroup$
– Michael E2
7 hours ago
1
$begingroup$
Thanks. I posted an answer. See if I understood correctly.
$endgroup$
– Michael E2
7 hours ago
|
show 6 more comments
$begingroup$
So basically you have a table of some values, let's call it a
:
a=Table[n,{n,10}];
(*{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}*)
And you want to take the beginning and end parts of the table, within the same line, and do something with them. It is my intention to change them all to 0, but really you could change them to some other variable, say b
. We want the parts of the list that do not include some inner values, we'll do {4,5,6}
which happen to correspond to the indexes 4 through 6, convenient, no?
a[[Cases[a, (Except[Alternatives @@ Range[4, 6]])]]] = b; a
(*{b, b, b, 4, 5, 6, b, b, b, b}*)
What's a simpler syntax for this? How can we call the end and beginning values of a list in a simpler manner?
a[[Cases[a, (Except[Alternatives @@ Range[4, 6]])]]]
(*{1, 2, 3, 7, 8, 9, 10}*)
The ideal input would be, to me, something like
a[[1;;3;7;;10]]
(*{1, 2, 3, 7, 8, 9, 10}*)
But this gives
(*{7, 8, 9, 10}*)
As expected.
How can we simplify the syntax to call the beginning and end parts of a list, leaving out some chosen middle portion?
list-manipulation syntax
$endgroup$
So basically you have a table of some values, let's call it a
:
a=Table[n,{n,10}];
(*{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}*)
And you want to take the beginning and end parts of the table, within the same line, and do something with them. It is my intention to change them all to 0, but really you could change them to some other variable, say b
. We want the parts of the list that do not include some inner values, we'll do {4,5,6}
which happen to correspond to the indexes 4 through 6, convenient, no?
a[[Cases[a, (Except[Alternatives @@ Range[4, 6]])]]] = b; a
(*{b, b, b, 4, 5, 6, b, b, b, b}*)
What's a simpler syntax for this? How can we call the end and beginning values of a list in a simpler manner?
a[[Cases[a, (Except[Alternatives @@ Range[4, 6]])]]]
(*{1, 2, 3, 7, 8, 9, 10}*)
The ideal input would be, to me, something like
a[[1;;3;7;;10]]
(*{1, 2, 3, 7, 8, 9, 10}*)
But this gives
(*{7, 8, 9, 10}*)
As expected.
How can we simplify the syntax to call the beginning and end parts of a list, leaving out some chosen middle portion?
list-manipulation syntax
list-manipulation syntax
asked 11 hours ago
CA TrevillianCA Trevillian
5891 gold badge2 silver badges12 bronze badges
5891 gold badge2 silver badges12 bronze badges
1
$begingroup$
Select[ a, ! MemberQ[ {4, 5, 6}, #] & ]
$endgroup$
– LouisB
10 hours ago
1
$begingroup$
Complement[ a, {4, 5, 6} ]
$endgroup$
– LouisB
10 hours ago
1
$begingroup$
Cheating a little, we could write(a[[#]] = b) & /@ {1 ;; 3, 7 ;; 10}
.
$endgroup$
– WReach
9 hours ago
1
$begingroup$
If it's the values, then inTable[n^2,{n,10}]
the initial segment would be the span1 ;; 1
and the final segment would be3 ;; 10
and the excluded segment (the positions not to be changed) would be2 ;; 2
, if the excluded values were 4, 5, 6 -- no?
$endgroup$
– Michael E2
7 hours ago
1
$begingroup$
Thanks. I posted an answer. See if I understood correctly.
$endgroup$
– Michael E2
7 hours ago
|
show 6 more comments
1
$begingroup$
Select[ a, ! MemberQ[ {4, 5, 6}, #] & ]
$endgroup$
– LouisB
10 hours ago
1
$begingroup$
Complement[ a, {4, 5, 6} ]
$endgroup$
– LouisB
10 hours ago
1
$begingroup$
Cheating a little, we could write(a[[#]] = b) & /@ {1 ;; 3, 7 ;; 10}
.
$endgroup$
– WReach
9 hours ago
1
$begingroup$
If it's the values, then inTable[n^2,{n,10}]
the initial segment would be the span1 ;; 1
and the final segment would be3 ;; 10
and the excluded segment (the positions not to be changed) would be2 ;; 2
, if the excluded values were 4, 5, 6 -- no?
$endgroup$
– Michael E2
7 hours ago
1
$begingroup$
Thanks. I posted an answer. See if I understood correctly.
$endgroup$
– Michael E2
7 hours ago
1
1
$begingroup$
Select[ a, ! MemberQ[ {4, 5, 6}, #] & ]
$endgroup$
– LouisB
10 hours ago
$begingroup$
Select[ a, ! MemberQ[ {4, 5, 6}, #] & ]
$endgroup$
– LouisB
10 hours ago
1
1
$begingroup$
Complement[ a, {4, 5, 6} ]
$endgroup$
– LouisB
10 hours ago
$begingroup$
Complement[ a, {4, 5, 6} ]
$endgroup$
– LouisB
10 hours ago
1
1
$begingroup$
Cheating a little, we could write
(a[[#]] = b) & /@ {1 ;; 3, 7 ;; 10}
.$endgroup$
– WReach
9 hours ago
$begingroup$
Cheating a little, we could write
(a[[#]] = b) & /@ {1 ;; 3, 7 ;; 10}
.$endgroup$
– WReach
9 hours ago
1
1
$begingroup$
If it's the values, then in
Table[n^2,{n,10}]
the initial segment would be the span 1 ;; 1
and the final segment would be 3 ;; 10
and the excluded segment (the positions not to be changed) would be 2 ;; 2
, if the excluded values were 4, 5, 6 -- no?$endgroup$
– Michael E2
7 hours ago
$begingroup$
If it's the values, then in
Table[n^2,{n,10}]
the initial segment would be the span 1 ;; 1
and the final segment would be 3 ;; 10
and the excluded segment (the positions not to be changed) would be 2 ;; 2
, if the excluded values were 4, 5, 6 -- no?$endgroup$
– Michael E2
7 hours ago
1
1
$begingroup$
Thanks. I posted an answer. See if I understood correctly.
$endgroup$
– Michael E2
7 hours ago
$begingroup$
Thanks. I posted an answer. See if I understood correctly.
$endgroup$
– Michael E2
7 hours ago
|
show 6 more comments
5 Answers
5
active
oldest
votes
$begingroup$
Update: You can also try MapAt
:
a = Range[10];
a = MapAt[b &, a, {{;; 3}, {7 ;;}}]
{b, b, b, 4, 5, 6, b, b, b, b}
Or ReplaceAll
a = Range[10];
a /. Alternatives @@ Drop[a, 4;;6] -> b
{b, b, b, 4, 5, 6, b, b, b, b}
Original answer: Try Drop
:
Drop[Range @ 10, {4, 6}]
{1, 2, 3, 7, 8, 9, 10}
Drop[Range @ 10, 4 ;; 6]
{1, 2, 3, 7, 8, 9, 10}
Drop[CharacterRange["a", "j"], {4, 6}]
{"a", "b", "c", "g", "h", "i", "j"}
$endgroup$
1
$begingroup$
Hah, shot myself in the foot with my end question...That works to get the values, but I'm unsure of the readability when we doa[[Drop[Range@10, {4, 6}]]] = b; a
. Though, it is a nice implementation and one I had not considered. I'm hoping to find something that is not too over-encumbered, in order to sit in a publication. This is much nicer than the original try of mine, and it only uses the definition of the neglected characters. Quite nice, actually, the more I debate it! Much more general of an approach. +1
$endgroup$
– CA Trevillian
11 hours ago
add a comment |
$begingroup$
If it is okay to perform two assignments instead of one, then we can write:
(a[[#]] = b) & /@ {1 ;; 3, 7 ;; 10}
Scan
is probably better since it does not bother constructing the result list that we are just going to discard anyway:
Scan[(a[[#]] = b) &, {1 ;; 3, 7 ;; 10}]
$endgroup$
$begingroup$
Well aaactually--that was the original reason for this question, and I probably could have written that....but I can't remember what cup of coffee I was on at that point! Regardless, this is a great implementation of a pure function applied to an index being used in a functional reassignment. This is technically in one line too, which satisfied my original criteria! Very cool. I wonder if this can be shorted at all for some sort-of code-golf-like...thing...answer? (Hint-hint, but it'd require some user thought) Oooooh scan, yessiree this is a great one,Scan
needs more use these days, imo.
$endgroup$
– CA Trevillian
9 hours ago
add a comment |
$begingroup$
Perhaps this?:
ReplacePart[Range@10, i_ /; Not[4 <= i <= 6] :> b]
(* {b, b, b, 4, 5, 6, b, b, b, b} *)
$endgroup$
$begingroup$
Wow nice!! I like the use ofRuleDelayed
, am I correct in understanding that you could use eitherTable[n,{n,10}]
orTable[n^2,{n,10}]
and we should see the 4th-6th indexed values preserved, asReplacePart
replaces the ith index? The use ofNot
provides a good deal of readability as well.
$endgroup$
– CA Trevillian
7 hours ago
1
$begingroup$
@CATrevillian Yes, it depends only on the index (part/position), not the value.
$endgroup$
– Michael E2
6 hours ago
add a comment |
$begingroup$
We can use Union[]
to perform this operation in a simpler manner:
a[[Range[1, 3] [Union] Range[7, 10]]]
(*{1, 2, 3, 7, 8, 9, 10}*)
But this is still decently messy, and the readability is not too high. Perhaps someone else has a better method?
a[[Range[1, 3] [Union] Range[7, 10]]] = b; a
(*{b, b, b, 4, 5, 6, b, b, b, b}*)
$endgroup$
add a comment |
$begingroup$
By far the simplest way is to do it in two lines:
a = Table[RandomReal[], {n, 10}];
a[[1 ;; 3]] = b;
a[[7 ;; 10]] = b;
a
This gives the output:
{b, b, b, 0.378846, 0.475894, 0.533768, b, b, b, b}
$endgroup$
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "387"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f203601%2fhow-to-take-the-beginning-and-end-parts-of-a-list-with-simpler-syntax%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
5 Answers
5
active
oldest
votes
5 Answers
5
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Update: You can also try MapAt
:
a = Range[10];
a = MapAt[b &, a, {{;; 3}, {7 ;;}}]
{b, b, b, 4, 5, 6, b, b, b, b}
Or ReplaceAll
a = Range[10];
a /. Alternatives @@ Drop[a, 4;;6] -> b
{b, b, b, 4, 5, 6, b, b, b, b}
Original answer: Try Drop
:
Drop[Range @ 10, {4, 6}]
{1, 2, 3, 7, 8, 9, 10}
Drop[Range @ 10, 4 ;; 6]
{1, 2, 3, 7, 8, 9, 10}
Drop[CharacterRange["a", "j"], {4, 6}]
{"a", "b", "c", "g", "h", "i", "j"}
$endgroup$
1
$begingroup$
Hah, shot myself in the foot with my end question...That works to get the values, but I'm unsure of the readability when we doa[[Drop[Range@10, {4, 6}]]] = b; a
. Though, it is a nice implementation and one I had not considered. I'm hoping to find something that is not too over-encumbered, in order to sit in a publication. This is much nicer than the original try of mine, and it only uses the definition of the neglected characters. Quite nice, actually, the more I debate it! Much more general of an approach. +1
$endgroup$
– CA Trevillian
11 hours ago
add a comment |
$begingroup$
Update: You can also try MapAt
:
a = Range[10];
a = MapAt[b &, a, {{;; 3}, {7 ;;}}]
{b, b, b, 4, 5, 6, b, b, b, b}
Or ReplaceAll
a = Range[10];
a /. Alternatives @@ Drop[a, 4;;6] -> b
{b, b, b, 4, 5, 6, b, b, b, b}
Original answer: Try Drop
:
Drop[Range @ 10, {4, 6}]
{1, 2, 3, 7, 8, 9, 10}
Drop[Range @ 10, 4 ;; 6]
{1, 2, 3, 7, 8, 9, 10}
Drop[CharacterRange["a", "j"], {4, 6}]
{"a", "b", "c", "g", "h", "i", "j"}
$endgroup$
1
$begingroup$
Hah, shot myself in the foot with my end question...That works to get the values, but I'm unsure of the readability when we doa[[Drop[Range@10, {4, 6}]]] = b; a
. Though, it is a nice implementation and one I had not considered. I'm hoping to find something that is not too over-encumbered, in order to sit in a publication. This is much nicer than the original try of mine, and it only uses the definition of the neglected characters. Quite nice, actually, the more I debate it! Much more general of an approach. +1
$endgroup$
– CA Trevillian
11 hours ago
add a comment |
$begingroup$
Update: You can also try MapAt
:
a = Range[10];
a = MapAt[b &, a, {{;; 3}, {7 ;;}}]
{b, b, b, 4, 5, 6, b, b, b, b}
Or ReplaceAll
a = Range[10];
a /. Alternatives @@ Drop[a, 4;;6] -> b
{b, b, b, 4, 5, 6, b, b, b, b}
Original answer: Try Drop
:
Drop[Range @ 10, {4, 6}]
{1, 2, 3, 7, 8, 9, 10}
Drop[Range @ 10, 4 ;; 6]
{1, 2, 3, 7, 8, 9, 10}
Drop[CharacterRange["a", "j"], {4, 6}]
{"a", "b", "c", "g", "h", "i", "j"}
$endgroup$
Update: You can also try MapAt
:
a = Range[10];
a = MapAt[b &, a, {{;; 3}, {7 ;;}}]
{b, b, b, 4, 5, 6, b, b, b, b}
Or ReplaceAll
a = Range[10];
a /. Alternatives @@ Drop[a, 4;;6] -> b
{b, b, b, 4, 5, 6, b, b, b, b}
Original answer: Try Drop
:
Drop[Range @ 10, {4, 6}]
{1, 2, 3, 7, 8, 9, 10}
Drop[Range @ 10, 4 ;; 6]
{1, 2, 3, 7, 8, 9, 10}
Drop[CharacterRange["a", "j"], {4, 6}]
{"a", "b", "c", "g", "h", "i", "j"}
edited 1 hour ago
answered 11 hours ago
kglrkglr
210k10 gold badges241 silver badges481 bronze badges
210k10 gold badges241 silver badges481 bronze badges
1
$begingroup$
Hah, shot myself in the foot with my end question...That works to get the values, but I'm unsure of the readability when we doa[[Drop[Range@10, {4, 6}]]] = b; a
. Though, it is a nice implementation and one I had not considered. I'm hoping to find something that is not too over-encumbered, in order to sit in a publication. This is much nicer than the original try of mine, and it only uses the definition of the neglected characters. Quite nice, actually, the more I debate it! Much more general of an approach. +1
$endgroup$
– CA Trevillian
11 hours ago
add a comment |
1
$begingroup$
Hah, shot myself in the foot with my end question...That works to get the values, but I'm unsure of the readability when we doa[[Drop[Range@10, {4, 6}]]] = b; a
. Though, it is a nice implementation and one I had not considered. I'm hoping to find something that is not too over-encumbered, in order to sit in a publication. This is much nicer than the original try of mine, and it only uses the definition of the neglected characters. Quite nice, actually, the more I debate it! Much more general of an approach. +1
$endgroup$
– CA Trevillian
11 hours ago
1
1
$begingroup$
Hah, shot myself in the foot with my end question...That works to get the values, but I'm unsure of the readability when we do
a[[Drop[Range@10, {4, 6}]]] = b; a
. Though, it is a nice implementation and one I had not considered. I'm hoping to find something that is not too over-encumbered, in order to sit in a publication. This is much nicer than the original try of mine, and it only uses the definition of the neglected characters. Quite nice, actually, the more I debate it! Much more general of an approach. +1$endgroup$
– CA Trevillian
11 hours ago
$begingroup$
Hah, shot myself in the foot with my end question...That works to get the values, but I'm unsure of the readability when we do
a[[Drop[Range@10, {4, 6}]]] = b; a
. Though, it is a nice implementation and one I had not considered. I'm hoping to find something that is not too over-encumbered, in order to sit in a publication. This is much nicer than the original try of mine, and it only uses the definition of the neglected characters. Quite nice, actually, the more I debate it! Much more general of an approach. +1$endgroup$
– CA Trevillian
11 hours ago
add a comment |
$begingroup$
If it is okay to perform two assignments instead of one, then we can write:
(a[[#]] = b) & /@ {1 ;; 3, 7 ;; 10}
Scan
is probably better since it does not bother constructing the result list that we are just going to discard anyway:
Scan[(a[[#]] = b) &, {1 ;; 3, 7 ;; 10}]
$endgroup$
$begingroup$
Well aaactually--that was the original reason for this question, and I probably could have written that....but I can't remember what cup of coffee I was on at that point! Regardless, this is a great implementation of a pure function applied to an index being used in a functional reassignment. This is technically in one line too, which satisfied my original criteria! Very cool. I wonder if this can be shorted at all for some sort-of code-golf-like...thing...answer? (Hint-hint, but it'd require some user thought) Oooooh scan, yessiree this is a great one,Scan
needs more use these days, imo.
$endgroup$
– CA Trevillian
9 hours ago
add a comment |
$begingroup$
If it is okay to perform two assignments instead of one, then we can write:
(a[[#]] = b) & /@ {1 ;; 3, 7 ;; 10}
Scan
is probably better since it does not bother constructing the result list that we are just going to discard anyway:
Scan[(a[[#]] = b) &, {1 ;; 3, 7 ;; 10}]
$endgroup$
$begingroup$
Well aaactually--that was the original reason for this question, and I probably could have written that....but I can't remember what cup of coffee I was on at that point! Regardless, this is a great implementation of a pure function applied to an index being used in a functional reassignment. This is technically in one line too, which satisfied my original criteria! Very cool. I wonder if this can be shorted at all for some sort-of code-golf-like...thing...answer? (Hint-hint, but it'd require some user thought) Oooooh scan, yessiree this is a great one,Scan
needs more use these days, imo.
$endgroup$
– CA Trevillian
9 hours ago
add a comment |
$begingroup$
If it is okay to perform two assignments instead of one, then we can write:
(a[[#]] = b) & /@ {1 ;; 3, 7 ;; 10}
Scan
is probably better since it does not bother constructing the result list that we are just going to discard anyway:
Scan[(a[[#]] = b) &, {1 ;; 3, 7 ;; 10}]
$endgroup$
If it is okay to perform two assignments instead of one, then we can write:
(a[[#]] = b) & /@ {1 ;; 3, 7 ;; 10}
Scan
is probably better since it does not bother constructing the result list that we are just going to discard anyway:
Scan[(a[[#]] = b) &, {1 ;; 3, 7 ;; 10}]
answered 9 hours ago
WReachWReach
54.9k2 gold badges118 silver badges217 bronze badges
54.9k2 gold badges118 silver badges217 bronze badges
$begingroup$
Well aaactually--that was the original reason for this question, and I probably could have written that....but I can't remember what cup of coffee I was on at that point! Regardless, this is a great implementation of a pure function applied to an index being used in a functional reassignment. This is technically in one line too, which satisfied my original criteria! Very cool. I wonder if this can be shorted at all for some sort-of code-golf-like...thing...answer? (Hint-hint, but it'd require some user thought) Oooooh scan, yessiree this is a great one,Scan
needs more use these days, imo.
$endgroup$
– CA Trevillian
9 hours ago
add a comment |
$begingroup$
Well aaactually--that was the original reason for this question, and I probably could have written that....but I can't remember what cup of coffee I was on at that point! Regardless, this is a great implementation of a pure function applied to an index being used in a functional reassignment. This is technically in one line too, which satisfied my original criteria! Very cool. I wonder if this can be shorted at all for some sort-of code-golf-like...thing...answer? (Hint-hint, but it'd require some user thought) Oooooh scan, yessiree this is a great one,Scan
needs more use these days, imo.
$endgroup$
– CA Trevillian
9 hours ago
$begingroup$
Well aaactually--that was the original reason for this question, and I probably could have written that....but I can't remember what cup of coffee I was on at that point! Regardless, this is a great implementation of a pure function applied to an index being used in a functional reassignment. This is technically in one line too, which satisfied my original criteria! Very cool. I wonder if this can be shorted at all for some sort-of code-golf-like...thing...answer? (Hint-hint, but it'd require some user thought) Oooooh scan, yessiree this is a great one,
Scan
needs more use these days, imo.$endgroup$
– CA Trevillian
9 hours ago
$begingroup$
Well aaactually--that was the original reason for this question, and I probably could have written that....but I can't remember what cup of coffee I was on at that point! Regardless, this is a great implementation of a pure function applied to an index being used in a functional reassignment. This is technically in one line too, which satisfied my original criteria! Very cool. I wonder if this can be shorted at all for some sort-of code-golf-like...thing...answer? (Hint-hint, but it'd require some user thought) Oooooh scan, yessiree this is a great one,
Scan
needs more use these days, imo.$endgroup$
– CA Trevillian
9 hours ago
add a comment |
$begingroup$
Perhaps this?:
ReplacePart[Range@10, i_ /; Not[4 <= i <= 6] :> b]
(* {b, b, b, 4, 5, 6, b, b, b, b} *)
$endgroup$
$begingroup$
Wow nice!! I like the use ofRuleDelayed
, am I correct in understanding that you could use eitherTable[n,{n,10}]
orTable[n^2,{n,10}]
and we should see the 4th-6th indexed values preserved, asReplacePart
replaces the ith index? The use ofNot
provides a good deal of readability as well.
$endgroup$
– CA Trevillian
7 hours ago
1
$begingroup$
@CATrevillian Yes, it depends only on the index (part/position), not the value.
$endgroup$
– Michael E2
6 hours ago
add a comment |
$begingroup$
Perhaps this?:
ReplacePart[Range@10, i_ /; Not[4 <= i <= 6] :> b]
(* {b, b, b, 4, 5, 6, b, b, b, b} *)
$endgroup$
$begingroup$
Wow nice!! I like the use ofRuleDelayed
, am I correct in understanding that you could use eitherTable[n,{n,10}]
orTable[n^2,{n,10}]
and we should see the 4th-6th indexed values preserved, asReplacePart
replaces the ith index? The use ofNot
provides a good deal of readability as well.
$endgroup$
– CA Trevillian
7 hours ago
1
$begingroup$
@CATrevillian Yes, it depends only on the index (part/position), not the value.
$endgroup$
– Michael E2
6 hours ago
add a comment |
$begingroup$
Perhaps this?:
ReplacePart[Range@10, i_ /; Not[4 <= i <= 6] :> b]
(* {b, b, b, 4, 5, 6, b, b, b, b} *)
$endgroup$
Perhaps this?:
ReplacePart[Range@10, i_ /; Not[4 <= i <= 6] :> b]
(* {b, b, b, 4, 5, 6, b, b, b, b} *)
answered 7 hours ago
Michael E2Michael E2
157k13 gold badges215 silver badges511 bronze badges
157k13 gold badges215 silver badges511 bronze badges
$begingroup$
Wow nice!! I like the use ofRuleDelayed
, am I correct in understanding that you could use eitherTable[n,{n,10}]
orTable[n^2,{n,10}]
and we should see the 4th-6th indexed values preserved, asReplacePart
replaces the ith index? The use ofNot
provides a good deal of readability as well.
$endgroup$
– CA Trevillian
7 hours ago
1
$begingroup$
@CATrevillian Yes, it depends only on the index (part/position), not the value.
$endgroup$
– Michael E2
6 hours ago
add a comment |
$begingroup$
Wow nice!! I like the use ofRuleDelayed
, am I correct in understanding that you could use eitherTable[n,{n,10}]
orTable[n^2,{n,10}]
and we should see the 4th-6th indexed values preserved, asReplacePart
replaces the ith index? The use ofNot
provides a good deal of readability as well.
$endgroup$
– CA Trevillian
7 hours ago
1
$begingroup$
@CATrevillian Yes, it depends only on the index (part/position), not the value.
$endgroup$
– Michael E2
6 hours ago
$begingroup$
Wow nice!! I like the use of
RuleDelayed
, am I correct in understanding that you could use either Table[n,{n,10}]
or Table[n^2,{n,10}]
and we should see the 4th-6th indexed values preserved, as ReplacePart
replaces the ith index? The use of Not
provides a good deal of readability as well.$endgroup$
– CA Trevillian
7 hours ago
$begingroup$
Wow nice!! I like the use of
RuleDelayed
, am I correct in understanding that you could use either Table[n,{n,10}]
or Table[n^2,{n,10}]
and we should see the 4th-6th indexed values preserved, as ReplacePart
replaces the ith index? The use of Not
provides a good deal of readability as well.$endgroup$
– CA Trevillian
7 hours ago
1
1
$begingroup$
@CATrevillian Yes, it depends only on the index (part/position), not the value.
$endgroup$
– Michael E2
6 hours ago
$begingroup$
@CATrevillian Yes, it depends only on the index (part/position), not the value.
$endgroup$
– Michael E2
6 hours ago
add a comment |
$begingroup$
We can use Union[]
to perform this operation in a simpler manner:
a[[Range[1, 3] [Union] Range[7, 10]]]
(*{1, 2, 3, 7, 8, 9, 10}*)
But this is still decently messy, and the readability is not too high. Perhaps someone else has a better method?
a[[Range[1, 3] [Union] Range[7, 10]]] = b; a
(*{b, b, b, 4, 5, 6, b, b, b, b}*)
$endgroup$
add a comment |
$begingroup$
We can use Union[]
to perform this operation in a simpler manner:
a[[Range[1, 3] [Union] Range[7, 10]]]
(*{1, 2, 3, 7, 8, 9, 10}*)
But this is still decently messy, and the readability is not too high. Perhaps someone else has a better method?
a[[Range[1, 3] [Union] Range[7, 10]]] = b; a
(*{b, b, b, 4, 5, 6, b, b, b, b}*)
$endgroup$
add a comment |
$begingroup$
We can use Union[]
to perform this operation in a simpler manner:
a[[Range[1, 3] [Union] Range[7, 10]]]
(*{1, 2, 3, 7, 8, 9, 10}*)
But this is still decently messy, and the readability is not too high. Perhaps someone else has a better method?
a[[Range[1, 3] [Union] Range[7, 10]]] = b; a
(*{b, b, b, 4, 5, 6, b, b, b, b}*)
$endgroup$
We can use Union[]
to perform this operation in a simpler manner:
a[[Range[1, 3] [Union] Range[7, 10]]]
(*{1, 2, 3, 7, 8, 9, 10}*)
But this is still decently messy, and the readability is not too high. Perhaps someone else has a better method?
a[[Range[1, 3] [Union] Range[7, 10]]] = b; a
(*{b, b, b, 4, 5, 6, b, b, b, b}*)
answered 11 hours ago
CA TrevillianCA Trevillian
5891 gold badge2 silver badges12 bronze badges
5891 gold badge2 silver badges12 bronze badges
add a comment |
add a comment |
$begingroup$
By far the simplest way is to do it in two lines:
a = Table[RandomReal[], {n, 10}];
a[[1 ;; 3]] = b;
a[[7 ;; 10]] = b;
a
This gives the output:
{b, b, b, 0.378846, 0.475894, 0.533768, b, b, b, b}
$endgroup$
add a comment |
$begingroup$
By far the simplest way is to do it in two lines:
a = Table[RandomReal[], {n, 10}];
a[[1 ;; 3]] = b;
a[[7 ;; 10]] = b;
a
This gives the output:
{b, b, b, 0.378846, 0.475894, 0.533768, b, b, b, b}
$endgroup$
add a comment |
$begingroup$
By far the simplest way is to do it in two lines:
a = Table[RandomReal[], {n, 10}];
a[[1 ;; 3]] = b;
a[[7 ;; 10]] = b;
a
This gives the output:
{b, b, b, 0.378846, 0.475894, 0.533768, b, b, b, b}
$endgroup$
By far the simplest way is to do it in two lines:
a = Table[RandomReal[], {n, 10}];
a[[1 ;; 3]] = b;
a[[7 ;; 10]] = b;
a
This gives the output:
{b, b, b, 0.378846, 0.475894, 0.533768, b, b, b, b}
edited 1 hour ago
answered 4 hours ago
axsvl77axsvl77
4973 silver badges16 bronze badges
4973 silver badges16 bronze badges
add a comment |
add a comment |
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f203601%2fhow-to-take-the-beginning-and-end-parts-of-a-list-with-simpler-syntax%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
$begingroup$
Select[ a, ! MemberQ[ {4, 5, 6}, #] & ]
$endgroup$
– LouisB
10 hours ago
1
$begingroup$
Complement[ a, {4, 5, 6} ]
$endgroup$
– LouisB
10 hours ago
1
$begingroup$
Cheating a little, we could write
(a[[#]] = b) & /@ {1 ;; 3, 7 ;; 10}
.$endgroup$
– WReach
9 hours ago
1
$begingroup$
If it's the values, then in
Table[n^2,{n,10}]
the initial segment would be the span1 ;; 1
and the final segment would be3 ;; 10
and the excluded segment (the positions not to be changed) would be2 ;; 2
, if the excluded values were 4, 5, 6 -- no?$endgroup$
– Michael E2
7 hours ago
1
$begingroup$
Thanks. I posted an answer. See if I understood correctly.
$endgroup$
– Michael E2
7 hours ago